2016-03-02 20 views
8

Podczas korzystania ze strumienia Java czasami po mapowaniu mogą wystąpić wartości puste. Obecnie, gdy wartości te muszą zostać pominięte, używam:Filtrowanie elementów pustych w strumieniu

.stream() 
.<other operations...> 
.filter(element -> element != null) 
.<other operations...> 

Dla stylu bardziej funkcjonalny mały metoda pomocnika szybko napisane:

public static <T> boolean nonNull(T entity) { 
    return entity != null; 
} 

Tak, że można użyć Referencyjna metoda zamiast:

.stream() 
.<other operations...> 
.filter(Elements::nonNull) 
.<other operations...> 

Nie mogłem znaleźć takiej metody jdk, chociaż podejrzewam, że ją zawarły. Czy istnieje tutaj inne podejście? A może pominęli to z jakiegoś powodu?

+9

Co z 'e -> e = null'! – immibis

+2

Nic w sobie, ale wolę odwołanie do metody, gdy sytuacja ta wystąpi w potoku używającym tylko odwołań do metod. Czuł się jak wyłącznik combo. –

+1

Powiązane: [Czy istnieje jakaś różnica między obiektami :: nonNull i x -> x! = Null?] (Https://stackoverflow.com/questions/25435056/is-there-any-difference-between-objectsnonnull-and- xx-null) –

Odpowiedz

27

Można użyć Objects::nonNull z Java8 SDK:

.stream() 
.<other operations...> 
.filter(Objects::nonNull) 
.<other operations...> 
+0

Nie mogę uwierzyć, że przeoczyłem tę! –

+0

@BorisvanKatwijk sprawdź całą klasę obiektów, ma kilka fajnych rzeczy :-) –

2

Można użyć Objects::nonNull

Zwraca TRUE jeśli warunkiem odniesienia jest niezerowe inaczej zwraca fałszywe.

.stream() 
.<other operations...> 
.filter(Objects::nonNull) 
.<other operations...> 
Powiązane problemy