Coleccionista de flujo de Java

Coleccionista de flujo de Java
La transmisión Java es la secuencia de elementos de una fuente que permite operaciones agregadas. Los elementos en las transmisiones se calculan según sea necesario, pero no se almacenan. Por otro lado, la clase de utilidad JDK tiene la clase de coleccionistas que tiene otros métodos fundamentales. La clase de coleccionistas tiene coleccionistas preconfigurados para llevar a cabo las tareas de reducción mutables típicas. Los elementos del grupo de colección de flujo, basados ​​en una condición, reducen los elementos a un solo valor (como min, max, conteo o total) o acumulan los elementos en colecciones. La clase de coleccionistas se incluye en la clase de transmisión, por lo que se puede llamar en una secuencia después de realizar cualquier operación de filtrado o mapeo. Se necesita un coleccionista para agregar los elementos de la transmisión a una colección designada.

Ejemplo 1:

El método Collect () se usa para generar la lista en el siguiente ejemplo. La implementación del colector que crea una nueva lista de los elementos de entrada es devuelto por los coleccionistas.método tolist ().

importar java.utilizar.arroyo.Coleccionistas;
importar java.utilizar.Lista;
importar java.utilizar.Lista de arreglo;
perfume de clase
int pid;
Cadena pname;
flotar pprice;
Perfume público (int pid, string pname, float pprice)
este.pid = pid;
este.pname = pname;
este.pPRICE = pPRICE;


coleccionistas de clase pública1
public static void main (string [] args)
ListperfumesList = new ArrayList ();
Lista de perfumes.Agregar (nuevo perfume (1, "Garden of Roses.", 5000f));
Lista de perfumes.Agregar (nuevo perfume (2, "tierra de las maravillas terrosas", 4000f));
Lista de perfumes.Agregar (nuevo perfume (3, "Berry Mellow.", 18000f));
Listperfumespricelist =
Lista de perfumes.arroyo()
.mapa (i-> i.pprice)
.recolectar (coleccionistas.Listar());
Sistema.afuera.println (perfumespricelista);

Definimos una clase de "perfumes" donde sus atributos se declaran como "Pname", "PID" y "Pprice". Luego, llamamos a estos atributos dentro del constructor de la función de "perfumes" como un parámetro y damos una referencia a los atributos actuales en esta función utilizando la palabra clave "esta". Después de esto, construimos la clase principal "Collector1" del programa donde se implementa el programa principal de este ejemplo. Aquí, establecemos la interfaz de lista para la clase "Perfumes" para crear la lista en la variable declarada "Perfumeslist". La lista incluye los diferentes valores para la ID de perfume, el nombre y el precio que se agregan a través de la función Add (). A continuación, generamos la lista "PerfumePriceList" donde se llama al "perfumelista" con el método stream () para generar la corriente de valores de perfume. Después de eso, usamos el método map () para obtener la lista de precios de los perfumes. Se implementa la clase de recolección que toma a los coleccionistas.tolist () para recoger los precios de la lista de perfumes e imprimir esa lista que solo contiene los precios.

La lista de precios de los perfumes de clase se obtiene utilizando los coleccionistas.método tolist ().

Ejemplo 2:

La clase Java Collector proporciona diferentes operaciones para la reducción. El método unirse () de la clase de coleccionistas Java se usa para combinar los varios elementos de un carácter o matriz de cadenas en un objeto específico. Esta técnica logra esto a través de la transmisión. La clase de colección incluye varias sobrecargas de métodos de unión.

importar java.utilizar.Lista;
importar java.utilizar.arroyo.Coleccionistas;
coleccionistas de clase pública2
public static void main (string [] args)
var myfriends = list.de ("William", "James", "Noah", "Oliver",
"Lucas", "Liam", "Benjamin");
var un booklist = myfriends.arroyo().recolectar (coleccionistas.unión(","));
Sistema.afuera.printf ("Lista de cadenas unidas: %s", unión);

Tenemos una declaración variable "myfriends" que se llama la lista.del método () para tener una implementación inmutable simple de la clase de lista. La lista se proporciona con los diferentes elementos de cadena. Después de eso, declaramos una variable de "Lista de unios" que primero crea la transmisión de la lista "Myfriends". Luego, el método Collect () invoca el método de unión de coleccionistas (). Los coleccionistas.El método unirse () se une a la lista en forma de una cadena utilizando la coma "", que se pasa como argumento. La lista unida de la cadena se imprime en la consola.

La salida que muestra la lista especificada se une a los coleccionistas.método unido ().

Ejemplo 3:

El método estático de la clase de recopiladores resumiendoInt () devuelve las estadísticas de los resultados obtenidos después de que se proporcionan un conjunto de valores de entrada a la implementación proporcionada TointFunction ().

importar java.utilizar.Matrices;
importar java.utilizar.Intsummarystatistics;
importar java.utilizar.Lista;
importar java.utilizar.arroyo.Coleccionistas;
importar java.utilizar.arroyo.Arroyo;
coleccionistas de clase pública3
Public static void main (String [] args)

ListNumList = matrices.Aslist (13, 25, 18, 18);
Sistema.afuera.println ("número ist -" + numList);
Streamnumstream = numList.arroyo();
IntsummarystatisticsnumSummary = numstream.recolectar (coleccionistas.resumiendoInt (i -> i));
Sistema.afuera.println ("Número de estadísticas de resumen de flujo -" + numsummary);

Declaramos el objeto de clase "NumList" de la lista donde se especifica la matriz de la lista de enteros utilizando el método aslist (). La lista de la matriz de enteros se muestra con la instrucción de impresión. Después de esto, creamos la secuencia de esa matriz de lista invocando el método stream () con la "lista de numeros" en la variable "numstream" de la clase de transmisión. A continuación, llamamos a la clase IntSummaryStatistics y declaramos el objeto "Numsummary" donde el método Collect () obtiene el resumen de la lista de matriz del método SummarizingInt () e imprime ese resumen en la ejecución del programa.

El resumen estadístico de la lista de matriz anterior se muestra en lo siguiente. Emite la suma, el valor mínimo, el valor máximo y el valor promedio.

Ejemplo 4:

El método de Java GroupingBy () de la clase de recopiladores se utiliza para agrupar los elementos de acuerdo con un atributo y almacenar los datos en un objeto de mapa. Además, los elementos totales que se dan como un parámetro en la secuencia también se pueden contar utilizando el método Counting () de coleccionistas que se pasa dentro del método GroupingBy (). La función devuelve un coleccionista que acepta los elementos del tipo T y recopila el número de elementos entrantes. El resultado del método Counting () es cero si no hay elementos.

importar java.utilizar.Matrices;
importar java.utilizar.Lista;
importar java.utilizar.Mapa;
importar java.utilizar.función.Función;
importar java.utilizar.arroyo.Coleccionistas;
coleccionistas de clase pública4
public static void main (string [] args)
Lista de ciudades =
Matrices.Aslist ("Phoenix", "Houston",
"Nueva York", "Phoenix", "San Diego", "Houston");
Mapmymap =
Ciudades.arroyo().recolectar(
Coleccionistas.Groupingby (
Función.identidad (), coleccionistas.contando()));
Sistema.afuera.println (mymap);

Creamos la lista de matriz con el método aslist () e insertamos los nombres de ciudades únicas y repetidas. Esta lista se declara en la variable "ciudades" de la clase de lista. Después de eso, tenemos una interfaz de mapa que declara el objeto "mymap". A través de esta interfaz de mapa, obtenemos la transmisión de la lista proporcionada. Luego, utilizamos el método Collect () que emplea aún más el método de la clase Collector GroupBy (). El método GroupingBy () agrupa los elementos de la lista identificándolos primero utilizando la función.Método identificar (). Luego, cuenta el número de elementos dados utilizando el método Counting () de la clase de coleccionistas. Los elementos agrupados después del procesamiento a través de los métodos de la clase de colección se muestran mediante la declaración de impresión.

La siguiente lista es la forma del grupo. El elemento que se repite en la lista se agrupa con el valor de "2". El elemento único tiene el valor de "1".

Ejemplo 5:

La clase de coleccionistas contiene otra definición de método para la colección y el then (). El método Static Collecting yThen () de la clase de coleccionistas produce por primera vez los resultados de la operación del coleccionista. Luego, se realiza la otra transformación de acabado adicional.

importar java.utilizar.Colecciones;
importar java.utilizar.Lista;
importar java.utilizar.arroyo.Coleccionistas;
importar java.utilizar.arroyo.Arroyo;
coleccionistas de clase pública5
public static void main (string [] args)
Streamstreamelements = stream.de ("uno", "dos", "tres");
ListSynClist = Streamelements.recolectar (coleccionistas.recolectando y
Coleccionistas.tolist (), colecciones :: synchronizedList));
Sistema.afuera.println (sinclista);


La secuencia de la cadena se define en la variable "Streamelements" de la clase de transmisión. Luego proporcionamos el objeto de lista "Synclist" para la sincronización de la lista. El método de recolección se aplica a la secuencia de "stamera". El método Collect () incluye el método Collecting yThen () que se emplea aún más con el método tolist (). Sin embargo, requerimos una lista inmutable. Entonces, usamos el método unmodifiAbleset () en la lista generada para devolver una representación no modificable de la lista. Luego, imprimimos la lista no modificable en la consola.

La salida del programa anterior se ejecuta en la siguiente imagen de la consola Java:

Conclusión

El método Java Stream Collect () se emplea principalmente para agregar los elementos de la corriente a las colecciones. Los elementos de la corriente se procesan a un procedimiento de reducción cambiante. Los procesos de reducción secuenciales y simultáneos son posibles. En el caso de una corriente paralela, maneja la sincronización. La clase de coleccionistas ofrece numerosas implementaciones de colección para ayudarnos. Algunos de los métodos de la clase de colección se implementan en este artículo.