java - 如何通过减少下游进行分组收集?

标签 java java-8 java-stream

我对 groupingBy 有疑问收集。在我的例子中,列表中的所有元素都有唯一的 addressType值(value)。我想要一个Map<String, Address>但是有Map<String, Optional<Address>>

List<Address> list = ....
Map<String, Optional<Address>> collect = list.stream()
    .collect(Collectors.groupingBy(Address::getAddressType,
             Collectors.reducing((o, o2) -> o)));

最佳答案

因为 列表中的所有元素都有唯一的 addressType 值,所以在这种情况下没有理由使用 Collectors.groupingBy。使用 Collectors.toMap 代替:

Map<String, Address> collect = 
    list.stream()
        .collect(Collectors.toMap(Address::getAddressType,
                                  Function.identity()));

关于java - 如何通过减少下游进行分组收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47196322/

相关文章:

java - Hbase mapreduce 作业 : all column values are null

Java 8 中的 java.sql.Date 与 Java 6 的比较

java - 将依赖项注入(inject) Guice 模块

使用 lambda 的 List<> 的 Java8 子列表

java - 从嵌套流中收集对象集

java - 使用生成类通过 2 个映射器通过 MapStruct 传输对象

java - 让 Selenium 暂停 X 秒

java - 从 Spring 框架迁移到 Play 框架 (Scala)

Java流无法识别类型

java - 如何使用流将 Collectors.groupingby 收集器创建的列表元素映射到其他类型?