Unificar los índices de las listas en una lista si el valor del primer índice es el mismo en Java.
Estoy buscando fusionar las listas en una lista si el primer índice coincide en Java 8.
Tengo una lista de listas
[[ABC, 1.0, 4.0, 4.0], [ABC, 2.0, 4.0, 4.0], [ABC, 1.0, 72.0, 72.0], [XYZ, 1.0, 36.0, 36.0], [XYZ, 2.0, 16.0, 16.0]]
Y quiero el resultado como se muestra a continuación de una manera efectiva, como usando transmisión en Java.
El resultado debería ser
[[ABC, 4.0, 116.0, 116.0], [XYZ, 3.0, 52.0, 52.0]]
¿Alguien podría ayudar, por favor?
davy.ai
En esta solución, utilizamos el método
stream()
para procesar la lista de listas. Primero agrupamos las sub-listas por su primer elemento (es decir, el índice coincidente) utilizando el métodogroupingBy()
. Esto devuelve un mapa donde cada clave corresponde a un primer elemento único.Luego obtenemos los
values()
del mapa para obtener unStream<><><object>>>
, donde cada sublista representa un conjunto de sub-listas con el mismo primer elemento. Luego podemos usar el métodomap()
para aplicar una función que calcula la suma de los segundos, terceros y cuartos elementos para cada grupo.Finalmente, creamos una nueva lista de listas utilizando el método
Arrays.asList()
y la devolvemos como resultado.