Kun*_*tra 1 java collections java-8 java-stream
public class Element {
private Long id;
private String groupType;
}
Run Code Online (Sandbox Code Playgroud)
我有元素列表。具有不同组类型的列表,例如“group1”、“group2”{1,group1}、{2,group1}、{3,group2}{4,group2}
我想为每个组创建两个不同列表的地图,但使用 ids(Map>) 而不是使用 Element 对象 Map>
下面的代码对于 Map> ie 工作正常
Map<String, List<Element>> elementByGroup = new HashMap<>();
elementByGroup = element.stream().collect(
Collectors.groupingBy(Element::getGroupType));
Run Code Online (Sandbox Code Playgroud)
如何以 Map<String, List<Long>> 的形式收集结果。我知道通过迭代 Map,然后迭代列表,我们可以在没有 java 8 的情况下获得 id 列表。但是我想通过在 groupingby 函数之后使用上面的代码进行操作来执行相同的操作。
小智 8
您需要使用Collectors.mapping()。它看起来像这样
Map<String, List<Long>> idsByGroupType =
elements.stream().collect(
Collectors.groupingBy(Element::getGroupType,
Collectors.mapping(Element::getId, Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)