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úblico | 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 | 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úblico | 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ública | 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 | 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úblico | 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ública | 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 | Devuelve un recopilador que divide los elementos de entrada según un predicado y los organiza en un mapa. |
Colector estático público | 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úblico | 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úblico | 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ública | 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úblico | 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 | 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ública | 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