ลองพิจารณาคลาส Parent
ซึ่งมีแอตทริบิวต์ Integer
เพียงอันเดียว ฉันสร้างวัตถุ 6 รายการของคลาสพาเรนต์และค่าของแอตทริบิวต์คือ 100, 20, 300, 400, 500, null
ตอนนี้ฉันได้เพิ่มวัตถุทั้งหมดลงในรายการ (ชื่อของรายการคือรายการ) ฉันต้องการรับวัตถุที่มีค่าแอตทริบิวต์มากกว่า 100
ฉันใช้สตรีม Java 8 เพื่อจุดประสงค์นี้
Predicate<Entity> predicate = e -> e.getParentId() < 100;
result = list.stream().filter(predicate).collect(Collectors.toList());
ฉันยังต้องการเรียงลำดับรายการจากมากไปน้อย ฉันใช้รหัสต่อไปนี้เพื่อจุดประสงค์นี้
Comparator<Entity> comp = (d1,d2) -> d2.getId().compareTo(d1.getId());
list.sort(comp);
ในทั้งสองกรณี ฉันได้รับ NullPointerException
จะจัดการเรื่องนี้อย่างไร?
e
นั่นคือnull
หรือe.getParentId()
หากe.getParentId()
ถูกประกาศเป็นInteger
(ชนิดชนิดบรรจุกล่อง) อาจเป็นค่าว่างได้ แต่เมื่อแปลงเป็นint
เพื่อเปรียบเทียบกับ 100 ผลลัพธ์จะเป็นNullPointerException
ถ้าเป็นnull
- person ajb   schedule 08.07.2015