Invertir Mapa con valor de lista Mapa <Key, List <Valor >> al mapa <Valor, Key> 8 en Java

Shessuky:

Tengo una especie mapa de agrupar los valores de clave Map<String, List<Integer>>, i desea revertir con el fin de asignar cada valor a la clave correspondiente

Ejemplo: Quiero transformar el código de abajo

Map<String, List<Integer>> mapOfIntList = new HashMap<String, List<Integer>>();

mapOfIntList.put("UNIT", Arrays.asList(1, 2, 3, 8, 7, 0, 8, 6));
mapOfIntList.put("TEN", Arrays.asList(24, 90, 63, 87));
mapOfIntList.put("HUNDRED", Arrays.asList(645, 457, 306, 762));
mapOfIntList.put("THOUSAND", Arrays.asList(1234, 3456, 5340, 9876));

a otro mapa (Integer, String) donde puedo encontrar: (1, "UNIDAD"), (2, "UNIDAD") ... (24, "diez"), (90, "diez") ... ( 645, "cien") ... (3456, "MIL") ...

Holger:

Puedes usar

Map<Integer, String> mapNumberToType = mapOfIntList.entrySet().stream()
    .collect(HashMap::new, (m,e)->e.getValue().forEach(v->m.put(v,e.getKey())), Map::putAll);

Usted puede reconocer la similitud con el forEachcódigo basado de esta respuesta dentro de la segunda función pasó a collect(acumulador) función. Para una ejecución secuencial, lo hacen básicamente lo mismo, pero esta solución secuencia admite el procesamiento en paralelo. Es por eso que necesita las otras dos funciones, para apoyar la creación de contenedores locales y para combinarlos.

Véase también la reducción mutable sección de la documentación.

Supongo que te gusta

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