java - Collectors.groupingBy 和 map

标签 java java-8

我正在努力 groupBy用 Doubles 计算后给所有人命名。

persons.stream()
                .map(p -> (p.getHeight() * p.getWeight()))
                .collect(Collectors.groupingBy(Person::getName)));

但是Stream<Double>不适用于这些参数。

我如何处理整数/ double ,然后再处理 groupBy 字符串?

最佳答案

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

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

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

persons.stream().collect(Collectors.toMap(
   Person::getName,
   p -> p.getHeight() * p.getWeight()));

关于java - Collectors.groupingBy 和 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036025/

相关文章:

java - 我用 Java 做了一个简单的游戏。是否可以刷新控制台,以便每次收到新数据时只显示该数据?

java - 将包含数据的数组传递给 List 的 toArray 方法

java - Map.merge ..非静态方法不能从静态上下文中引用

Java 8 无法在 FIPS 中加载其 cacerts。异常 "no such provider: SunEC"

java - 如何从 Java8 中的对象流中获取公共(public)项

java - 在 Java 中使用 for 循环创建按钮

java - JDBC 中的负载平衡和复制

java - 如何确保 ExecutorService 池已完成而不关闭它?

java - Java 中对象的压缩和扩展

java - 坚持使用 lambda 表达式和 Map