相关疑难解决方法(0)

Java 8 Streams:多个过滤器与复杂条件

有时您想要Stream使用多个条件过滤a :

myList.stream().filter(x -> x.size() > 10).filter(x -> x.isCool()) ...
Run Code Online (Sandbox Code Playgroud)

或者你可以用复杂的条件和单一的方式 做同样的事情filter:

myList.stream().filter(x -> x.size() > 10 && x -> x.isCool()) ...
Run Code Online (Sandbox Code Playgroud)

我的猜测是第二种方法具有更好的性能特征,但我不知道.

第一种方法在可读性方面取胜,但性能更好?

java lambda filter java-8 java-stream

206
推荐指数
3
解决办法
14万
查看次数

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

我在做简单的测试。

@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);


    }
Run Code Online (Sandbox Code Playgroud)

我的员工表包含数据:

1   Jeff Bezos  100000
2   Bill Gates  200000
3   Mark Zuckerberg 300000
Run Code Online (Sandbox Code Playgroud)

当前测试成功运行。

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

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

List<Employee> employeeList= ....
Run Code Online (Sandbox Code Playgroud)

java java-stream

2
推荐指数
1
解决办法
2659
查看次数

标签 统计

java ×2

java-stream ×2

filter ×1

java-8 ×1

lambda ×1