Ram*_*han 2 java-8 java-stream
我有以下数据结构
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;
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题。我有一个区域实例,比如 z。
我想流式传输 z 并执行以下操作:使用以下条件构造 z 的映射:如果密钥(基于区域的“Id”)是新的,则使用该密钥和该密钥在映射中创建一个条目区。如果该键是重复的,则将该重复区域的所有“部分”附加到现有区域的部分列表中。最后,我应该有一个以区域的“Id”为键、以区域为值的地图。
在 Java8 中如何使用流来做到这一点?
您可以使用Collectors.toMap(), 创建一个新的Map区域 id 作为键,区域作为值,如果存在重复项,则从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;
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6096 次 |
| 最近记录: |