2016-03-02 12 views
8

Khi sử dụng Luồng Java, đôi khi các giá trị null có thể xảy ra sau khi ánh xạ. Hiện nay khi các giá trị cần phải được bỏ qua, tôi sử dụng:Lọc các mục Null trong Luồng

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

Đối với một phong cách chức năng hơn một phương pháp helper nhỏ nhanh chóng viết:

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

Vì vậy mà bạn có thể sử dụng một tài liệu tham khảo phương pháp thay vì:

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

Tôi không thể tìm thấy phương pháp jdk như vậy, mặc dù tôi nghi ngờ rằng họ đã bao gồm một phương pháp. Có cách tiếp cận khác ở đây không? Hay họ đã bỏ qua điều này vì một lý do?

+9

Điều gì xảy ra với 'e -> e! = Null'? – immibis

+2

Không có gì trong chính nó, nhưng tôi thích một tham chiếu phương pháp khi tình huống này xảy ra trong một đường ống chỉ sử dụng các tham chiếu phương thức. Nó cảm thấy giống như một bộ ngắt kết hợp. –

+1

Liên quan: [Có sự khác biệt nào giữa các đối tượng :: nonNull và x -> x! = Null?] (Https://stackoverflow.com/questions/25435056/is-there-any-difference-between-objectsnonnull-and- xx-null) –

Trả lời

27

Bạn có thể sử dụng Objects::nonNull từ Java8 SDK:

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

Không thể tin rằng tôi đã bỏ qua điều đó! –

+0

@BorisvanKatwijk kiểm tra toàn bộ lớp Đối tượng, có một số nội dung thú vị :-) –

2

Bạn có thể sử dụng Objects::nonNull

Returns true nếu tài liệu tham khảo được cung cấp là không null nếu không thì trả sai.

.stream() 
.<other operations...> 
.filter(Objects::nonNull) 
.<other operations...> 
Các vấn đề liên quan