我一直在摆弄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("");
});
解决方法:
我将数据集合与数据表示分开.
Map 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有一个返回int的getAge()方法和一个返回String的getFirstName()方法.
标签:java,java-8,java-stream
来源: https://codeday.me/bug/20190724/1521998.html