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

时间:2017-11-09 07:34:20

标签: java java-8 java-stream

我遇到groupingBy收集问题。在我的例子中,列表中的所有元素都具有唯一的addressType值。我想获得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)));

1 个答案:

答案 0 :(得分:6)

all elements in list have unique addressType value以来,在这种情况下没有理由使用Collectors.groupingBy。请改用Collectors.toMap

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