2016-11-29 61 views
5

Uczę się filtrowania za pomocą strumienia Java. Ale strumień po filtrowaniu niczego nie drukuje. Myślę, że metoda filtrowania nie jest wykonywana. Mój kod filtrowanie jest następujący:Java 8 Stream - Dlaczego metoda filtra nie jest wykonywana?

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

nie ma błędu kompilacji i nie stanowi wyjątku również. Wszelkie sugestie?

Odpowiedz

12

filter to operacja pośrednia, która zostanie wykonana tylko wtedy, gdy potok potokowy kończy się operacją terminalu.

Na przykład:

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

Jak to jest Twoja metoda filtr jest bezużyteczny, ponieważ zawsze zwraca true, a tym samym nie wykonuje filtrowanie.