我執行下面的程序不打印的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 –
此外你的心智模式假設你需要通過所有的元素管道在執行終端操作之前。如果您需要找到滿足謂詞的第一個元素,那麼這將會非常低效。 –