分组后,将对象列表从类型A转换为类型B.

aqu*_*ind 4 java java-8 collectors

Map<Integer,List<ItemTypeA>> list = data.stream().collect(groupingBy(ItemTypeA::getId)); 
Run Code Online (Sandbox Code Playgroud)

我有一个将ItemTypeA转换为ItemTypeB的函数.

public ItemTypeB convert (ItemTypeA); 
Run Code Online (Sandbox Code Playgroud)

如何在此后使用它,groupingBy以便最终结果如下所示.

Map<Integer,List<ItemTypeB>> map = data.stream().collect(groupingBy(ItemTypeA::getId), 
Run Code Online (Sandbox Code Playgroud)

如何调用函数转换ItemTypeAItemTypeB?;

Era*_*ran 7

你可以使用Collectors.mapping:

Map<Integer,List<ItemTypeB>> output = 
    data.stream()
        .collect(Collectors.groupingBy(ItemTypeA::getId,
                 Collectors.mapping(a->convert(a),
                                    Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)