我一直在摆弄Java Streams。我有一个Employee
对象,我根据年龄对对象进行分组,我需要员工的姓名。这是正确的方法吗,还是我使用了太多的循环?
employeeList.stream().collect(Collectors.groupingBy(person -> person.age))
.forEach((age, person) -> {
System.out.print("In the age " + age + " the following people are present ");
person.forEach(name -> System.out.print(name.getFirstName() + ", "));
System.out.println("");
});
答案 0 :(得分:8)
我将数据收集与数据展示分开。
Map<Integer,String> namesByAge =
employeeList.stream()
.collect(Collectors.groupingBy(Employee::getAge,
Collectors.mapping(Employee::getFirstName,
Collectors.joining(","))));
现在您可以打印每个年龄段的名称:
namesByAge.forEach((age, names) ->
System.out.println("In the age " + age + " the following people are present " + names));
希望我的方法名称正确。根据您的代码,我假设Employee
有一个返回getAge()
的{{1}}方法,以及一个返回int
的{{1}}方法。