Primera experiencia de Stream
Stream es una característica importante de las colecciones de operaciones en Java 8. Veamos primero cómo se define la transmisión en Java:
"Una secuencia de elementos que respaldan las operaciones agregadas secuenciales y paralelas".
Interpretemos la oración anterior:
1. Stream es una colección de elementos que hace que Stream se parezca a Iterator;
2. Puede soportar las operaciones de agregar la transmisión original en secuencia y paralelo.
Hay muchas formas de crear Stream, y hay varias otras formas de crear una colección además de las más comunes.
Lista para transmitir
La lista hereda de la interfaz de colección, y la colección proporciona el método Stream ().
List <integer> list = lists.newarrayList (1, 2, 3); stream <integer> stream = list.stream ();
Array a la transmisión
Para matrices, las matrices proporcionan el método Stream ().
String [] arr = new String [] {"A", "B", "C"}; Stream <String> stream = arrays.stream (arr); Mapa para transmitir
El mapa no es una secuencia, ni una colección, y no hay forma de convertirlo directamente en Stream (). Pero EntrySet () se establece y se puede convertir.
Map <string, object> map = maps.newhashmap (); stream <entry <string, object >> stream = map.entryset (). Stream ();
Crear transmisión directamente
Stream también proporciona una API para generar directamente una transmisión, que puede entenderse aproximadamente como una lista. Porque el interno es implementado por una matriz.
Stream <integer> integerStream = stream.of (1, 2, 3);
Lea la transmisión del archivo
Aquellos que han usado Linux admirarán los símbolos de la tubería en la línea de comando, y un símbolo de tubería se puede procesar continuamente. Se pueden implementar funciones similares al leer archivos en Java.
Long uniquewords = 0; try (stream <string> líneas = files.lines (paths.get ("data.txt"), charset.defaultcharset ())) {uniquewords = line.flatmap (l -> arrays.stream (l.split ("))) .distint () .count ();} Catch (ioexception e) Generar flujo infinito a través de funciones
Stream proporciona iterate para generar una secuencia infinita, una secuencia infinita basada en el valor inicial. Puede usar Lambda para establecer las reglas de generación de secuencias, como agregar 2 cada vez.
Stream.iterate (0, n -> n + 2) .limit (10) .forEach (System.out :: println);
Por ejemplo, secuencia de fibonacci
Stream.iterate (new int [] {0, 1}, t -> new int [] {t [1], t [0] + t [1]}) .limit (20) .map (t -> t [0] .forach (system.out :: println); Stream también proporciona otro método de generación para generar secuencias. Recibe una función de secuencia generada por el usuario intsupplier.
Intsupplier fib = new intsupplier () {private int anterior = 0; Private int curt = 1; @Override public int getAsInt () {int OldPrevious = this.previous; int nextValue = this.previous + this.current; this.previous = this.Current; this.current = nextValue; devolver Oldprevious; }}; Intstream.generate (fib) .limit (10) .forEach (System.out :: println);Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.