gpt4 book ai didi

java - 如何处理java streams api中的可选对象?

转载 作者:行者123 更新时间:2023-12-02 06:27:30 26 4
gpt4 key购买 nike

我在做简单的测试。

@Test
public void whenFilterEmployees_thenGetFilteredEmployees(){
Integer[] empIds = {1,2,3};
List<Optional<Employee>> employees = Stream.of(empIds)
.map(employeeRepository::findById)
.collect(Collectors.toList());

List<Employee> employeeList = employees
.stream().filter(Optional::isPresent)
.map(Optional::get)
.filter(e->e !=null)
.filter(e->e.getSalary()>200000)
.collect(Collectors.toList());

assertEquals(Arrays.asList(arrayOfEmps[2]), employeeList);


}

我的员工表包含数据:

1   Jeff Bezos  100000
2 Bill Gates 200000
3 Mark Zuckerberg 300000

当前测试运行成功。

如你所见,我准备了两个员工列表,即 employees 和 employeeList

我这样做是因为 findById 方法返回 Optional。我如何使用 streams api 以便我可以简单地获取员工列表

List<Employee> employeeList= ....

最佳答案

只需合并两个流管道即

List<Employee> employees = Stream.of(empIds)
.map(employeeRepository::findById)
.filter(Optional::isPresent)
.map(Optional::get)
//.filter(e->e !=null) not needed as it's redundant
.filter(e->e.getSalary()>200000)
.collect(Collectors.toList());

关于java - 如何处理java streams api中的可选对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53061725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com