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