es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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étodo groupingBy(). Esto devuelve un mapa donde cada clave corresponde a un primer elemento único.

    Luego obtenemos los values() del mapa para obtener un Stream<><><object>>>, donde cada sublista representa un conjunto de sub-listas con el mismo primer elemento. Luego podemos usar el método map() 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.

Comments are closed.