Dado un Stream of Arrays en Java, la tarea es aplanar el Stream usando el método forEach().
Ejemplos:
Input: arr[][] = {{ 1, 2 }, { 3, 4, 5, 6 }, { 7, 8, 9 }} Output: [1, 2, 3, 4, 5, 6, 7, 8, 9] Input: arr[][] = {{'G', 'e', 'e', 'k', 's'}, {'F', 'o', 'r'}} Output: [G, e, e, k, s, F, o, r]
Acercarse:
- Obtenga las arrays en forma de array 2D.
- Cree una lista vacía para recopilar los elementos aplanados.
- Con la ayuda de forEach loop, convierta cada elemento de la array en flujo y agréguelo a la lista
- Ahora convierta esta lista en flujo usando el método stream().
- Ahora aplana el flujo convirtiéndolo en una array usando el método toArray().
A continuación se muestra la implementación del enfoque anterior:
Ejemplo 1: uso de arrays de enteros.
// Java program to flatten a stream of arrays // using forEach() method import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; class GFG { // Function to flatten a Stream of Arrays public static <T> Stream<T> flattenStream(T[][] arrays) { // Create an empty list to collect the stream List<T> list = new ArrayList<>(); // Using forEach loop // convert the array into stream // and add the stream into list for (T[] array : arrays) { Arrays.stream(array) .forEach(list::add); } // Convert the list into Stream and return it return list.stream(); } public static void main(String[] args) { // Get the arrays to be flattened. Integer[][] arr = { { 1, 2 }, { 3, 4, 5, 6 }, { 7, 8, 9 } }; // Flatten the Stream Integer[] flatArray = flattenStream(arr) .toArray(Integer[] ::new); // Print the flattened array System.out.println(Arrays.toString(flatArray)); } }
Producción:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Ejemplo 2: uso de arrays de caracteres.
// Java program to flatten a stream of arrays // using forEach() method import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; class GFG { // Function to flatten a Stream of Arrays public static <T> Stream<T> flattenStream(T[][] arrays) { // Create an empty list to collect the stream List<T> list = new ArrayList<>(); // Using forEach loop // convert the array into stream // and add the stream into list for (T[] array : arrays) { Arrays.stream(array) .forEach(list::add); } // Convert the list into Stream and return it return list.stream(); } public static void main(String[] args) { // Get the arrays to be flattened. Character[][] arr = { { 'G', 'e', 'e', 'k', 's' }, { 'F', 'o', 'r' }, { 'G', 'e', 'e', 'k', 's' } }; // Flatten the Stream Character[] flatArray = flattenStream(arr) .toArray(Character[] ::new); // Print the flattened array System.out.println(Arrays.toString(flatArray)); } }
Producción:
[G, e, e, k, s, F, o, r, G, e, e, k, s]
Publicación traducida automáticamente
Artículo escrito por RishabhPrabhu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA