首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java :按布尔谓词划分为两个列表

Java :按布尔谓词划分为两个列表
EN

Stack Overflow用户
提问于 2017-10-26 15:15:44
回答 4查看 13.7K关注 0票数 37

我有一个employees的列表。他们有isActive布尔字段。我想把employees分成两个列表:activeEmployeesformerEmployees。是否可以使用Stream?最复杂的方法是什么?

EN

回答 4

Stack Overflow用户

发布于 2017-10-26 15:26:01

在这种情况下,您还可以使用groupingBy,因为有2种组的可能性(活跃的和不活动的员工):

代码语言:javascript
复制
Map<Boolean, List<Employee>> grouped = employees.stream()
                .collect(Collectors.groupingBy(Employee::isActive));

List<Employee> activeEmployees = grouped.get(true);
List<Employee> formerEmployees = grouped.get(false);
票数 7
EN

Stack Overflow用户

发布于 2019-04-03 11:06:31

最复杂的方法是什么?

Java12当然有新的Collectors::teeing

代码语言:javascript
复制
List<List<Employee>> divided = employees.stream().collect(
      Collectors.teeing(
              Collectors.filtering(Employee::isActive, Collectors.toList()),
              Collectors.filtering(Predicate.not(Employee::isActive), Collectors.toList()),
              List::of
      ));

System.out.println(divided.get(0));  //active
System.out.println(divided.get(1));  //inactive
票数 5
EN

Stack Overflow用户

发布于 2019-01-27 21:00:19

如果您愿意使用第三方库,这将使用来自Collectors2.partition日食收藏

代码语言:javascript
复制
PartitionMutableList<Employee> partition =
        employees.stream().collect(
                Collectors2.partition(Employee::isActive, PartitionFastList::new));

List<Employee> activeEmployees = partition.getSelected();
List<Employee> formerEmployees = partition.getRejected();

您还可以使用ListIterate简化事情。

代码语言:javascript
复制
PartitionMutableList<Employee> partition =
        ListIterate.partition(employees, Employee::isActive);

List<Employee> activeEmployees = partition.getSelected();
List<Employee> formerEmployees = partition.getRejected();

PartitionMutableList是从PartitionIterable扩展而来的类型。PartitionIterable的每个子类型都有一个阳性结果getSelected()和阴性结果getRejected()的集合。

注意:我是Eclipse集合的提交者。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46958023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档