filter方法可对Optional内对象进行过滤。
1. 准备类
public class Staff {
String name;
Integer age;
public Staff(){
}
public Staff(String name, Integer age){
this.name = name;
this.age = age;
}
... // getter setter
}
2. 示例
@Test
void filterOptionalTest(){
ArrayList<Staff> staffList = new ArrayList<>();
staffList.add(new Staff("Jerome",28));
staffList.add(new Staff("Chris",44));
System.out.println("----------------List Stream Filter--------------------------");
String name = staffList.stream().filter(s -> s.getAge() < 30).map(s -> s.getName()).findFirst().orElseGet(() -> "Null");
System.out.println(name);
System.out.println("----------------Optional Filter--------------------------");
name = Optional.ofNullable(staffList.get(0)).filter(s -> s.getAge() > 30).map(s -> s.getName()).orElse("Null");
System.out.println(name);
name = Optional.ofNullable(staffList.get(1)).filter(s -> s.getAge() > 30).map(s -> s.getName()).orElse("Null");
System.out.println(name);
}
显示
----------------List Stream Filter--------------------------
Jerome
----------------Optional Filter--------------------------
Null
Chris