Hãy xem xét một lớp Parent
chỉ chứa một thuộc tính Integer
. Tôi đã tạo 6 đối tượng của lớp cha và các giá trị thuộc tính là 100, 20, 300, 400, 500, null
.Xử lý một thuộc tính null bằng cách sử dụng các luồng java 8 và sắp xếp bằng cách sử dụng các biểu thức lambda
Bây giờ tôi đã thêm tất cả các đối tượng vào danh sách (Tên danh sách là danh sách). Sau đó, tôi muốn lấy các đối tượng có giá trị thuộc tính lớn hơn 100
. Tôi đã sử dụng các luồng Java 8 cho mục đích này.
Predicate<Entity> predicate = e -> e.getParentId() < 100;
result = list.stream().filter(predicate).collect(Collectors.toList());
Tôi cũng muốn sắp xếp danh sách theo thứ tự giảm dần. Tôi đã sử dụng đoạn mã sau cho mục đích này.
Comparator<Entity> comp = (d1,d2) -> d2.getId().compareTo(d1.getId());
list.sort(comp);
Trong cả hai trường hợp, tôi nhận được NullPointerException
.
Làm cách nào để xử lý việc này?
bản sao có thể có của [Cách chúng tôi quản lý luồng jdk8 cho giá trị null] (http://stackoverflow.com/questions/17081063/how-should-we-manage-jdk8-stream-for-null-values) – alfasin
I 'không rõ ràng ... là nó 'e' đó là' null', hoặc 'e.getParentId()'? Nếu 'e.getParentId()' được khai báo là 'Integer' (kiểu được đóng), nó có thể là null. Nhưng sau đó khi nó được chuyển thành một 'int' để so sánh nó với 100, kết quả sẽ là' NullPointerException' nếu nó là 'null'. – ajb