2016-11-29 358 views
5

我正在學習使用java流進行過濾。 但過濾後的流不打印任何東西。 我認爲過濾方法沒有得到執行。 我的過濾代碼如下:Java 8 Stream - 爲什麼filter方法不能執行?

Stream.of("d2", "a2", "b1", "b3", "c") 
    .filter(s -> { 
     s.startsWith("b"); 
     System.out.println("filter: " + s); 
     return true; 
    }); 

沒有編譯錯誤,沒有異常也。 有什麼建議嗎?

回答

12

filter是一箇中間操作,只有流管道在終端操作中結束時纔會執行。

例如:

Stream.of("d2", "a2", "b1", "b3", "c") 
    .filter(s -> { 
     s.startsWith("b"); 
     System.out.println("filter: " + s); 
     return true; 
    }) 
    .forEach (System.out::println); 

因爲它是,你的過濾方法是無用的,因爲它總是返回true,並且因此不執行濾波。