forma más eficiente para convertir / mapa entero a la lista de aplanar (claves y valores juntos, no por separado)

tratando de aprender :

Necesito convertir siguiente:

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

a

List<List<String>> listOflists

donde las claves de un mapa externo ( mapOfMaps) son redundantes (para esta operación). Así que, básicamente, sólo puede utilizar mapOfMaps.values().stream()para empezar.

Y para cada objeto de mapa, por ejemplo:

{ "Manzana": "1", "naranja": "2"}

Necesito convertir a una lista:

{ "Manzana", "1", "naranja", "2"}

¿Cuál es la forma más eficiente de hacer esto?

Ejemplo completo:

{ "1L": { "key1": "valor1", "clave2": "valor2"}, "2L": { "key3": "valor3", "key4": "valor4"}}

Esperado:

[[Key1, valor1, key2, valor2], [key3, value3, key4, valor4]]

Eran :

Algo como esto:

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());

Para cada interno Map, permite transmitir sobre el entrySet(), y crear una corriente de todas las claves y valores, que se recogen en una List.

Por ejemplo, si inicializar la Mapcon:

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");

Obtendrá el siguiente List:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=324536&siteId=1
Recomendado
Clasificación