收藏家.组合和地图

jim*_*s17 2 java java-8

groupBy在用双打计算后,我很难为所有人命名.

persons.stream()
                .map(p -> (p.getHeight() * p.getWeight()))
                .collect(Collectors.groupingBy(Person::getName)));
Run Code Online (Sandbox Code Playgroud)

Stream<Double>不适用于这些论点.

如何处理整数/双精度然后处理groupBy String?

Lou*_*man 6

一种可能的解决方案如下:

 persons.stream().collect(Collectors.groupingBy(
   Person::getName,
   HashMap::new,
   Collectors.mapping(
      p -> p.getHeight() * p.getWeight()
      Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)

或者,如果您不希望重复名称,则可以使用更简单的名称

persons.stream().collect(Collectors.toMap(
   Person::getName,
   p -> p.getHeight() * p.getWeight()));
Run Code Online (Sandbox Code Playgroud)