如何通过java8将列表转换为映射?
你好,我是java世界的新手 我有一个关于如何使用树度量将列表转换为地图的问题如何通过java8将列表转换为映射?,java,java-8,java-stream,Java,Java 8,Java Stream,你好,我是java世界的新手 我有一个关于如何使用树度量将列表转换为地图的问题 public class AdditionalMetrics implements Serializable { private static final long serialVersionUID = 3813944465194104658L; private Long id; private String masterId; private String nodeKey;
public class AdditionalMetrics implements Serializable {
private static final long serialVersionUID = 3813944465194104658L;
private Long id;
private String masterId;
private String nodeKey;
private String nodeValue;
}
我想将List
转换为Map您不能使用toMap()
,因为您有许多nodeKey/nodeValue对要映射到单个masterId值(除非使用合并函数)
通过masterId
进行分组更容易:
Map<String, Map<String, String>> result = additionalMetrics.stream()
.collect(Collectors.groupingBy(
AdditionalMetrics::getMasterId,
Collectors.toMap(AdditionalMetrics::getNodeKey,
AdditionalMetrics::getNodeValue)));
Map result=additionalMetrics.stream()
.collect(收集器.groupingBy(
AdditionalMetrics::getMasterId,
Collectors.toMap(AdditionalMetrics::getNodeKey,
附加度量:getNodeValue));
使用三个度量。我不知道如何使用三个度量,我会避免使用嵌套映射。相反,我将使用属性masterId
和nodeKey
和equals
和hashCode
实现创建一个MetricsIdValueKey
,然后将其用于映射
Map<String, Map<String, String>> result = additionalMetrics.stream()
.collect(Collectors.groupingBy(
AdditionalMetrics::getMasterId,
Collectors.toMap(AdditionalMetrics::getNodeKey,
AdditionalMetrics::getNodeValue)));