gpt4 book ai didi

java - 在 Java 中将 Map 转换为 List>

转载 作者:行者123 更新时间:2023-11-30 10:32:37 24 4
gpt4 key购买 nike

我想转换一个 Map<String, List<MyObject>> to List<Map<String, MyObject>>

{<key1,[myObject1, myObject2]>, <key2,[myObject3, myObject4]>}
will be converted to
[{<key1,myObject1>, <key2,myObject3>}, {<key1,myObject2>, <key2, myObject4>}]

其中 myObject1 和 myObject3 具有相同的唯一 ID,myObject2 和 myObject4 也是如此。

我的实现如下,但是否有更优化的方法。

private List<Map<String, MyObject>> getObjectMapList( Map<String, List<MyObject>> objectMap)

{
List<Map<String, MyObject>> objectMapList = new ArrayList<Map<String,MyObject>>();

for(MyObject myObject : objectMap.get("key1")) {// there will be default key1 whose value is known

Map<String, MyObject> newMap= new HashMap<String, MyObject>();
for (String key : objectMap.keySet()) {
newMap.put(key, objectMap.get(key).stream()
.filter(thisObject -> thisObject.getId().equals(myObject.getId()))
.collect(Collectors.toList()).get(0));
}
objectMapList.add(newMap);
}
return objectMapList;

}

最佳答案

这是一个没有任何大括号的 1-liner:

private List<Map<String, MyObject>> getObjectMapList( Map<String, List<MyObject>> objectMap) {
return map.entrySet().stream()
.map(e -> e.getValue().stream()
.map(o -> Collections.singletonMap(e.getKey(), o))
.collect(Collections.toList())
.flatMap(List::stream)
.collect(Collections.toList());
}

这里的主要“技巧”是使用 Collections.singletonMap()允许无 block 地在线创建和填充 map 。


免责声明:代码可能无法像在我手机上输入的那样编译或工作(但很有可能会工作)

关于java - 在 Java 中将 Map<String, List<MyObject> 转换为 List<Map<String, MyObject>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42600588/

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