java - 使用 Java 8 Streams 如何使用一个列表获取两个不同的列表
问题描述
假设我有员工数据列表。
class Employee {
private long id;
private String name;
private int age;
// Constrctor
// setters & getters
}
List<Employee> empList = ...;
使用上面的 empList,如何使用Java8 流将两个不同的列表(例如age > 20到一个列表和age < 20到一个列表中) 。
解决方案
你可以使用Collectors.partitioningBy
public static void main(String[] args) {
List<Employee> employeeList = Arrays.asList(new Employee(10), new Employee(15),
new Employee(21), new Employee(22));
Map<Boolean, List<Employee>> employeeGroups = employeeList.stream().
collect(Collectors.partitioningBy(s -> s.getAge() > 20));
System.out.println(employeeGroups.get(false));
System.out.println(employeeGroups.get(true));
}
输出:
[Employee{age=10}, Employee{age=15}]
[Employee{age=21}, Employee{age=22}]
推荐阅读
- c# - 是否可以在 HTTP 请求中创建不需要的必需属性?
- node.js - 无法从 mongodb-atlas 获取数据?
- javascript - 使用 lodash react js 过滤带有数组值的嵌套数据
- javascript - Primefaces inputMask 只接受十六进制
- ruby-on-rails - 将变量从设计控制器传递到自定义邮件程序?
- websocket - 通过 Websockets 对 MQTT 代理的前端订阅
- python - 如何在列表视图中选择行
- perl - 如何在perl中存储模块avail命令的输出?
- reactjs - 如何从某些屏幕中删除页眉和页脚
- google-ads-api - 如何使用 Google php 客户端库启用 gRPC 日志?