Stream.concat() en Java

El método Stream.concat() crea un flujo concatenado en el que los elementos son todos los elementos del primer flujo seguidos de todos los elementos del segundo flujo. El flujo resultante se ordena si ambos flujos de entrada están ordenados y es paralelo si cualquiera de los flujos de entrada es paralelo.

Sintaxis:

static <T> Stream<T> concat(Stream<? extends T> stream1, 
                            Stream<? extends T> stream2)

Where, T is the type of stream elements,
stream1 represents the first stream,
stream2 represents the second stream and
the function returns the concatenation of
the two input streams

Se puede pensar que las llamadas a Stream.concat(stream1, stream2) forman un árbol binario. La concatenación de todos los flujos de entrada está en la raíz. Los flujos de entrada individuales están en las hojas. A continuación se dan algunos ejemplos de árboles de hasta cuatro flujos de entrada a, b, c y d.

Para dos flujos a y b, el árbol se ve así:

Para tres flujos a, b y c, el árbol se ve así:

Para cuatro flujos a, b, c y d, el árbol se ve así:

Cada flujo de entrada adicional agrega una capa de profundidad al árbol y una capa de indirección para llegar a todas las otras corrientes.

Nota: Los elementos devueltos por el método Stream.concat() están ordenados. Por ejemplo, las siguientes dos líneas devuelven el mismo resultado:

Stream.concat(Stream.concat(stream1, stream2), stream3);
Stream.concat(stream1, Stream.concat(stream2, stream3));

Pero el resultado para los dos siguientes es diferente.

Stream.concat(Stream.concat(stream1, stream2), stream3); 
Stream.concat(Stream.concat(stream2, stream1), stream3);

A continuación se muestran algunos ejemplos para comprender mejor la implementación de la función.
Ejemplo 1 :

// Implementation of Stream.concat()
// method in Java 8 with 2 Streams
import java.util.*;
import java.util.stream.IntStream;
import java.util.stream.Stream;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
        // Creating two Streams
        Stream<String> stream1 = Stream.of("Geeks", "for");
        Stream<String> stream2 = Stream.of("GeeksQuiz", "GeeksforGeeks");
  
        // concatenating both the Streams
        // with Stream.concat() function
        // and displaying the result
        Stream.concat(stream1, stream2)
            .forEach(element -> System.out.println(element));
    }
}
Producción:

Geeks
for
GeeksQuiz
GeeksforGeeks

Ejemplo 2:

// Implementation of Stream.concat()
// method in Java 8 with more than
// two Streams
import java.util.*;
import java.util.stream.IntStream;
import java.util.stream.Stream;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating more than two Streams
        Stream<String> stream1 = Stream.of("Geeks");
        Stream<String> stream2 = Stream.of("GeeksQuiz");
        Stream<String> stream3 = Stream.of("GeeksforGeeks");
        Stream<String> stream4 = Stream.of("GFG");
  
        // concatenating all the Streams
        // with Stream.concat() function
        // and displaying the result
        Stream.concat(Stream.concat(Stream.concat(stream1,
                             stream2), stream3), stream4)
            .forEach(element -> System.out.println(element));
    }
}
Producción:

Geeks
GeeksQuiz
GeeksforGeeks
GFG

Ejemplo 3:

// Implementation of Stream.concat()
// method in Java 8 with DoubleStream
import java.util.*;
import java.util.stream.Stream;
import java.util.stream.DoubleStream;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating two Streams
        DoubleStream Stream1 = DoubleStream.of(1520, 1620);
        DoubleStream Stream2 = DoubleStream.of(1720, 1820);
  
        // concatenating both the Streams and
        // displaying the result
        DoubleStream.concat(Stream1, Stream2)
            .forEach(element -> System.out.println(element));
    }
}
Producción:

1520.0
1620.0
1720.0
1820.0

Ejemplo 4:

// Implementation of Stream.concat()
// method in Java 8 and removing
// the duplicates
import java.util.*;
import java.util.stream.IntStream;
import java.util.stream.Stream;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating two Streams
        Stream<String> stream1 = Stream.of("Geeks", "for", "GeeksforGeeks");
        Stream<String> stream2 = Stream.of("GeeksQuiz", "GeeksforGeeks", "for");
  
        // concatenating both the Streams
        // with Stream.concat() function
        // and displaying the result after
        // removing the duplicates
        Stream.concat(stream1, stream2).distinct().forEach(element -> System.out.println(element));
    }
}
Producción:

Geeks
for
GeeksforGeeks
GeeksQuiz

Ejemplo 5:

// Implementation of Stream.concat()
// method in Java 8 with LongStream
import java.util.*;
import java.util.stream.Stream;
import java.util.stream.LongStream;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating two Streams
        LongStream Stream1 = LongStream.of(1520, 1620);
        LongStream Stream2 = LongStream.of(1720, 1820);
  
        // concatenating both the Streams and
        // displaying the result
        LongStream.concat(Stream1, Stream2)
            .forEach(element -> System.out.println(element));
    }
}
Producción:

1520
1620
1720
1820

Publicación traducida automáticamente

Artículo escrito por Sahil_Bansall y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *