这是使用Java Streams的正确方法吗?

时间:2018-01-16 11:49:08

标签: java java-8 java-stream

我一直在摆弄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("");
    });

1 个答案:

答案 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}}方法。