logo

Coleccionistas de Java

Collectors es una clase final que extiende la clase Object. Proporciona operaciones de reducción, como acumular elementos en colecciones, resumir elementos según varios criterios, etc.

La clase Java Collectors proporciona varios métodos para tratar elementos

Métodos Descripción
Colector estático público promediandoDouble (asignador ToDoubleFunction) Devuelve un recopilador que produce la media aritmética de una función de doble valor aplicada a los elementos de entrada. Si no hay elementos presentes, el resultado es 0.
Reducción del colector estático público (identidad T, operación BinaryOperator) Devuelve un recopilador que realiza una reducción de sus elementos de entrada bajo un BinaryOperator especificado utilizando la identidad proporcionada.
Colector estático públicoreduciendo (BinaryOperator op) Devuelve un recopilador que realiza una reducción de sus elementos de entrada bajo un BinaryOperator especificado. El resultado se describe como opcional.
Reducción del recopilador estático público (identidad U, asignador de funciones, operación BinaryOperator) Devuelve un recopilador que realiza una reducción de sus elementos de entrada bajo una función de mapeo especificada y BinaryOperator. Esta es una generalización de la reducción (Objeto, BinaryOperator) que permite una transformación de los elementos antes de la reducción.
Colector estático público> groupingBy(Clasificador de funciones) Devuelve un recopilador que implementa una operación 'agrupar por' en elementos de entrada de tipo T, agrupa elementos según una función de clasificación y devuelve los resultados en un mapa.
Colector estático públicogroupingBy (clasificador de funciones, recopilador en sentido descendente) Devuelve un recopilador que implementa una operación 'agrupar por' en cascada en elementos de entrada de tipo T, agrupa elementos según una función de clasificación y luego realiza una operación de reducción en los valores asociados con una clave determinada utilizando el recopilador descendente especificado.
estática públicaAgrupación de recopiladores por (clasificador de funciones, fábrica de mapas de proveedores, recopilador en sentido descendente) Devuelve un recopilador que implementa una operación 'agrupar por' en cascada en elementos de entrada de tipo T, agrupa elementos según una función de clasificación y luego realiza una operación de reducción en los valores asociados con una clave determinada utilizando el recopilador descendente especificado. El mapa producido por el recopilador se crea con la función suministrada de fábrica.
Colector estático público> groupingByConcurrent(Clasificador de funciones) Devuelve un recopilador concurrente que implementa una operación 'agrupar por' en elementos de entrada de tipo T, agrupando elementos según una función de clasificación.
Colector estático públicogroupingByConcurrent (clasificador de funciones, recopilador en sentido descendente) Devuelve un recopilador concurrente que implementa una operación 'agrupar por' en cascada en elementos de entrada de tipo T, agrupa elementos según una función de clasificación y luego realiza una operación de reducción en los valores asociados con una clave determinada utilizando el recopilador descendente especificado.
estática públicaAgrupación de recopiladores por concurrente (clasificador de funciones, fábrica de mapas de proveedores, recopilador en sentido descendente) Devuelve un recopilador concurrente que implementa una operación 'agrupar por' en cascada en elementos de entrada de tipo T, agrupa elementos según una función de clasificación y luego realiza una operación de reducción en los valores asociados con una clave determinada utilizando el recopilador descendente especificado. El ConcurrentMap producido por Collector se crea con la función de fábrica proporcionada.
Colector estático público> particionamiento por (predicado predicado) Devuelve un recopilador que divide los elementos de entrada según un predicado y los organiza en un mapa. . No hay garantías sobre el tipo, mutabilidad, serialización o seguridad de subprocesos del mapa devuelto.
Colector estático públicoparticionamiento por (predicado predicado, recopilador en sentido descendente) Devuelve un recopilador que divide los elementos de entrada según un predicado, reduce los valores en cada partición según otro recopilador y los organiza en un mapa cuyos valores son el resultado de la reducción posterior.
Colector estático públicotoMap(Asignador de teclas de función, Asignador de valores de función) Devuelve un recopilador que acumula elementos en un mapa cuyas claves y valores son el resultado de aplicar las funciones de mapeo proporcionadas a los elementos de entrada.
Colector estático públicotoMap (Función keyMapper, Función valueMapper, BinaryOperator mergeFunction). Devuelve un recopilador que acumula elementos en un mapa cuyas claves y valores son el resultado de aplicar las funciones de mapeo proporcionadas a los elementos de entrada.
estática públicaCollector toMap(Clave de funciónMapper, Valor de funciónMapper, BinaryOperator mergeFunction, Proveedor mapProveedor) Devuelve un recopilador que acumula elementos en un mapa cuyas claves y valores son el resultado de aplicar las funciones de mapeo proporcionadas a los elementos de entrada.
Colector estático públicotoConcurrentMap(Asignador de teclas de función, Asignador de valores de función) Devuelve un recopilador concurrente que acumula elementos en un ConcurrentMap cuyas claves y valores son el resultado de aplicar las funciones de mapeo proporcionadas a los elementos de entrada.
Colector estático públicotoConcurrentMap(Función keyMapper, Función valueMapper, BinaryOperator mergeFunction) Devuelve un recopilador concurrente que acumula elementos en un ConcurrentMap cuyas claves y valores son el resultado de aplicar las funciones de mapeo proporcionadas a los elementos de entrada.
estática públicaRecopilador deMapaConcurrente(Asignador de claves de función, Asignador de valores de función, Función de fusión de Operador binario, Mapa de proveedorProveedor) Devuelve un recopilador concurrente que acumula elementos en un ConcurrentMap cuyas claves y valores son el resultado de aplicar las funciones de mapeo proporcionadas a los elementos de entrada.
Colector estático público resumiendoInt (asignador ToIntFunction) Devuelve un recopilador que aplica una función de mapeo de producción de int a cada elemento de entrada y devuelve estadísticas resumidas para los valores resultantes.
Colector estático público que resume Long (asignador ToLongFunction) Devuelve un recopilador que aplica una función de mapeo de producción prolongada a cada elemento de entrada y devuelve estadísticas resumidas para los valores resultantes.
Colector estático público que resume el doble (asignador ToDoubleFunction) Devuelve un recopilador que aplica una función de mapeo de doble producción a cada elemento de entrada y devuelve estadísticas resumidas para los valores resultantes.

Ejemplo de recopiladores de Java: obtención de datos como una lista

 import java.util.stream.Collectors; import java.util.List; import java.util.ArrayList; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class CollectorsExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); List productPriceList = productsList.stream() .map(x->x.price) // fetching price .collect(Collectors.toList()); // collecting as list System.out.println(productPriceList); } } 

Producción:

 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Ejemplo de recopiladores de Java: conversión de datos como un conjunto

 import java.util.stream.Collectors; import java.util.Set; import java.util.List; import java.util.ArrayList; classProduct{ intid; String name; floatprice; public Product(intid, String name, floatprice) { this.id = id; this.name = name; this.price = price; } } publicclass CollectorsExample { publicstaticvoid main(String[] args) { ListproductsList = new ArrayList(); //Adding Products productsList.add(newProduct(1,'HP Laptop',25000f)); productsList.add(newProduct(2,'Dell Laptop',30000f)); productsList.add(newProduct(3,'Lenevo Laptop',28000f)); productsList.add(newProduct(4,'Sony Laptop',28000f)); productsList.add(newProduct(5,'Apple Laptop',90000f)); SetproductPriceList = productsList.stream() .map(x->x.price) // fetching price .collect(Collectors.toSet()); // collecting as list System.out.println(productPriceList); } } 

Producción:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Ejemplo de recopiladores de Java: uso del método de suma

 import java.util.stream.Collectors; import java.util.List; import java.util.ArrayList; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class CollectorsExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); Double sumPrices = productsList.stream() .collect(Collectors.summingDouble(x->x.price)); // collecting as list System.out.println('Sum of prices: '+sumPrices); Integer sumId = productsList.stream().collect(Collectors.summingInt(x->x.id)); System.out.println('Sum of id's: '+sumId); } } 

Producción:

Java público vs privado
 Sum of prices: 201000.0 Sum of id's: 15 

Ejemplo de recopiladores de Java: obtención del precio medio del producto

 import java.util.stream.Collectors; import java.util.List; import java.util.ArrayList; class Product{ int id; String name; float price; public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } } public class CollectorsExample { public static void main(String[] args) { List productsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); Double average = productsList.stream() .collect(Collectors.averagingDouble(p->p.price)); System.out.println('Average price is: '+average); } } 

Producción:

 Average price is: 40200.0 

Ejemplo de recopiladores de Java: contar elementos

 import java.util.stream.Collectors; import java.util.List; import java.util.ArrayList; class Product{ intid; String name; floatprice; public Product(intid, String name, floatprice) { this.id = id; this.name = name; this.price = price; } publicint getId() { returnid; } public String getName() { returnname; } publicfloat getPrice() { returnprice; } } publicclass CollectorsExample { publicstaticvoid main(String[] args) { ListproductsList = new ArrayList(); //Adding Products productsList.add(new Product(1,'HP Laptop',25000f)); productsList.add(new Product(2,'Dell Laptop',30000f)); productsList.add(new Product(3,'Lenevo Laptop',28000f)); productsList.add(new Product(4,'Sony Laptop',28000f)); productsList.add(new Product(5,'Apple Laptop',90000f)); Long noOfElements = productsList.stream() .collect(Collectors.counting()); System.out.println('Total elements : '+noOfElements); } } 

Producción:

 Total elements : 5