gpt4 book ai didi

java-8 - Java 8 将列表转换为映射处理重复键和操作值

转载 作者:行者123 更新时间:2023-12-01 21:58:02 25 4
gpt4 key购买 nike

我有以下数据结构

public class Zones {

private List<Zone> zones;
}

public class Zone {

private int id;
private String name;
private List<Part> parts;
}

public class Part {
private int id;
private String name;
}

这是我的问题。我有一个 Zones 实例,比如 z。

我想流式传输 z 并执行以下操作:使用以下条件从 z 构建 map :如果 key (基于区域的“Id”)是新的,则使用 key 和区域在 map 中创建一个条目。如果 key 重复,则将此重复区域的所有“部分”附加到现有区域的部分列表中。最后,我应该有一个以区域的“Id”为键,以区域为值的 map 。

我如何在 Java8 中使用流来做到这一点?

最佳答案

您可以使用 Collectors.toMap() , 制作一个新的 Map以 zone id 为键,以 Zone 为值,如果有重复则取 List<Part>从第二个区域并将其附加到第一个区域:

  Map<Integer, Zone> map = z.getZones().stream()
.collect(Collectors.toMap(Zone::getId, Function.identity(),
(zone1, zone2) -> {
zone1.getParts().addAll(zone2.getParts());
return zone1;
}));

关于java-8 - Java 8 将列表转换为映射处理重复键和操作值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55331901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com