Te recomendamos que revises esta solución en un ambiente controlado antes de enviarlo a producción, un saludo.
Solución:
Algo como esto:
List> listOflists =
mapOfMaps.values()
.stream()
.map(m -> m.entrySet()
.stream()
.flatMap(e->Stream.of(e.getKey(),e.getValue()))
.collect(Collectors.toList()))
.collect(Collectors.toList());
Para cada interior Map
fluyes sobre el entrySet()
y crear una secuencia de todos los keys y valores, que recopilas en un List
.
Por ejemplo, si inicializa el Map
con:
Map> 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");
Obtendrás lo siguiente List
:
[[key1, value1, key2, value2], [key3, value3, key4, value4]]
A continuación se muestra mi versión de la solución. Puede iterar sobre la entrada y agregar valores a la lista deseada en consecuencia.
List> list = map.
values()
.stream()
.map(value ->
List list1 = new ArrayList<>();
for (Map.Entry entry : value.entrySet())
list1.add(entry.getKey());
list1.add(entry.getValue());
return list1;
)
.collect(Collectors.toList());
Entrada de prueba:
Map> map = new HashMap<>();
Map submap1 = new HashMap<>();
submap1.put("test", "test2");
Map submap2 = new HashMap<>();
submap2.put("test6", "6");
map.put(1l, submap1);
map.put(2l, submap2);
valoraciones y reseñas
Si te gustó nuestro trabajo, tienes la libertad de dejar una noticia acerca de qué le añadirías a esta crónica.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)