Avatar ·

Cómo convertir una lista de listas (List<List<T>>) en una lista plana (List<T>) en Java 8?

¡Hola a todos! Acabo de empezar a aprender Java 8 y Stream API, y me encontré con esta tarea. Tengo una estructura de datos que es una lista de listas de strings. Por ejemplo, obtengo datos de un archivo CSV, donde cada fila es una lista de campos y todo el archivo es una lista de dichas filas. Necesito combinar todas estas filas en una sola lista, es decir, "aplanar" la estructura anidada. Aquí hay un ejemplo simplificado de lo que tengo: ```java List> listOfLists = Arrays.asList( Arrays.asList("a", "b", "c"), Arrays.asList("d", "e"), Arrays.asList("f", "g", "h", "i") ); ``` Quiero obtener como salida: ```java List flatList = Arrays.asList("a", "b", "c", "d", "e", "f", "g", "h", "i"); ``` Sé que en Java antiguo (antes de 8) esto se podía hacer con bucles for-each anidados, pero es engorroso. He oído que en Java 8 hay una forma elegante de hacerlo con streams, pero no logro entenderlo. Probé algo como `listOfLists.st