我需要转换以下内容:
Map<Long,Map<String,String>> mapOfMaps
到
List<List<String>> listOflists
其中外部映射的键(
mapOfMaps
)是冗余的(用于此操作)。因此,基本上,我可以只使用mapOfMaps.values().stream()
开头。对于每个 map 对象,例如:
我需要将其转换为列表:
最有效的方法是什么?
完整的例子:
预期的:
最佳答案
像这样的东西:
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");
您将获得以下
List
:[[key1, value1, key2, value2], [key3, value3, key4, value4]]