假设我有员工数据列表。
class Employee {
private long id;
private String name;
private int age;
// Constrctor
// setters & getters
}
List<Employee> empList = ...;
使用上面的empList,如何获得两个不同的列表,如年龄
您可以执行以下操作:
List<Employee> greaterThan20 = empList.filter(e -> e.age > 20).collect(Collectors.toList());
List<Employee> lessThan20 = empList.filter(e -> e.age < 20).collect(Collectors.toList());
您可以使用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));
您可以使用收集器。分区依据
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?示例: