如何在Java 8中分组后仅从对象中提取ID

时间:2019-07-22 18:47:50

标签: java collections java-8 java-stream

public class Element {

    private Long id;

    private String groupType;

}
  

我有元素列表。与其他groupType相似的列表   'group1','group2'{1,group1},{2,group1},{3,group2} {4,group2}

     

我想为每个组创建两个不同列表的地图,但是   ids(Map>)不能与Element对象一起使用   地图>

     

下面的代码对于Map>正常工作,即

Map<String, List<Element>> elementByGroup = new HashMap<>();
        elementByGroup = element.stream().collect(
                Collectors.groupingBy(Element::getGroupType));
  

我如何以Map >的形式收集结果。我知道   通过迭代Map然后迭代列表,我们可以获得ID的列表   没有Java8。但是我想通过使用   上面的代码在groupingby函数之后。

1 个答案:

答案 0 :(得分:2)

看起来像这样

elements.stream()
        .collect(Collectors.groupingBy(Element::getGroupType,
                                       Collectors.mapping(Element::getId,
                                                          Collectors.toList())));