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

Yeg*_*kin 3 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)));
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 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()));
Run Code Online (Sandbox Code Playgroud)