我需要转换以下内容:

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]]

10-06 14:43