当前位置: 首页 > 知识库问答 >
问题:

使用Java8流如何使用一个列表获得两个不同的列表[重复]

燕扬
2023-03-14

假设我有员工数据列表。

class Employee {
   private long id;
   private String name;
   private int age;
   // Constrctor
   // setters & getters
}
List<Employee> empList = ...;

使用上面的empList,如何获得两个不同的列表,如年龄

共有3个答案

漆雕唯
2023-03-14

您可以执行以下操作:

List<Employee> greaterThan20 = empList.filter(e -> e.age > 20).collect(Collectors.toList());

List<Employee> lessThan20 = empList.filter(e -> e.age < 20).collect(Collectors.toList());
拓拔麒
2023-03-14

您可以使用Collectors.groupingBy

Map<Boolean, List<Employee>> ageGtThan20ToEmployees = empList.stream()
                .collect(Collectors.groupingBy(e -> e.age > 20));
System.out.println("Employees 20 years old are: "+ageGtThan20ToEmployees.get(true));
叶福
2023-03-14

您可以使用收集器。分区依据

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}]
 类似资料:
  • 如何使用stream转换下面的代码而不使用for each循环。 getAllSubjects()返回所有列表,每个主题都有。所有列表应合并为。 需要从中获取 对象模型:

  • 我有一个学生名单a和学生名单B。 学生对象包含如下字段:否、年龄、城市、出生日期、工资 我的列表A包含这些对象 我的列表B包含这些对象 我想做的是提取ListA有但listB没有的学生对象,以及ListA和listB有但薪水不同的学生对象(如否、年龄、城市)。我还想写工资差异。 我想在java 8中使用流api。首先,我想将students对象提取到列表中,但我现在可以提取常见的student对象

  • 如何从对象列表中获得distinct(基于两个属性的distinct)列表。例如,让有一个带有属性名称和价格的对象列表。现在,我如何获得一个具有不同名称或价格的列表。 假设 然后在返回- n1,p1的price上运行filter 这不是预期的结果。

  • 在这里,我有两个项目列表,我想要合并到一个列表中,并在保存到数据库之前删除重复项。但是我得到一个错误,“非静态方法不能从静态上下文引用”。虽然我知道该消息的含义,但我不知道如何在Java8流的上下文中解决它。拜托,救命。 下面是错误消息的快照

  • 我想把两个列表合并成一个列表列表。反之亦然。我找不到任何工作,我对Python非常陌生 例子: 如何将S拆分回原来的S1和S2?示例: