gpt4 book ai didi

java - 将整个映射转换/展平为列表的最有效方法(键和值在一起,而不是分开)

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

我需要转换以下内容:

Map<Long,Map<String,String>> mapOfMaps

List<List<String>> listOflists

其中外部映射 (mapOfMaps) 的键是冗余的(对于此操作)。所以基本上,我可以使用 mapOfMaps.values().stream() 开始。

对于每个 map 对象,例如:

{"apple":"1","orange":"2"}

我需要将其转换为列表:

{"apple","1","orange","2"}

最有效的方法是什么?

完整示例:

{ "1L" : { "key1" : "value1" , "key2" : "value2" } , "2L" : { "key3" : "value3" , "key4" : "value4" } }

预期:

[[key1, value1, key2, value2], [key3, value3, key4, value4]]

最佳答案

类似这样的事情:

List<List<String>> listOflists =
mapOfMaps.values()
.stream()
.map(m -> m.entrySet()
.stream()
.flatMap(e->Stream.of(e.getKey(),e.getValue()))
.collect(Collectors.toList()))
.collect(Collectors.toList());

对于每个内部 Map,您通过 entrySet() 进行流式传输,并创建所有键和值的流,并将其收集到 List 中.

例如,如果您使用以下方式初始化Map:

Map<Long,Map<String,String>> mapOfMaps = new HashMap<>();
mapOfMaps.put(1L,new HashMap());
mapOfMaps.put(2L,new HashMap());
mapOfMaps.get(1L).put("key1","value1");
mapOfMaps.get(1L).put("key2","value2");
mapOfMaps.get(2L).put("key3","value3");
mapOfMaps.get(2L).put("key4","value4");

您将获得以下列表:

[[key1, value1, key2, value2], [key3, value3, key4, value4]]

关于java - 将整个映射转换/展平为列表的最有效方法(键和值在一起,而不是分开),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58655329/

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