我执行下面的程序不打印的Java 8流过滤器和foreach方法如预期
filter: d2
forEach: d2
filter: a2
forEach: a2
filter: b1
forEach: b1
filter: b3
forEach: b3
filter: c
forEach: c
不过,我期待下面的输出:
filter: d2
filter: a2
filter: b1
filter: b3
filter: c
forEach: d2
forEach: a2
forEach: b1
forEach: b3
forEach: c
意思是,首先filter
方法循环应该已经完全执行,然后方法循环应该已经开始。
有什么我做错了吗?
你没有做错什么,这是预期。 – Tunaki
相关:http://stackoverflow.com/questions/32414088/java-8-stream-difference-between-limit-and-skip/32414480 –
此外你的心智模式假设你需要通过所有的元素管道在执行终端操作之前。如果您需要找到满足谓词的第一个元素,那么这将会非常低效。 –