logo

Coletores Java

Collectors é uma classe final que estende a classe Object. Fornece operações de redução, como acumular elementos em coleções, resumir elementos de acordo com vários critérios, etc.

A classe Java Collectors fornece vários métodos para lidar com elementos

Métodos Descrição
coletor estático público averagingDouble (mapeador ToDoubleFunction) Ele retorna um Coletor que produz a média aritmética de uma função de valor duplo aplicada aos elementos de entrada. Se nenhum elemento estiver presente, o resultado será 0.
Redução de coletor estático público (identidade T, operação BinaryOperator) Ele retorna um Coletor que executa uma redução de seus elementos de entrada em um BinaryOperator especificado usando a identidade fornecida.
Coletor estático públicoreduzindo (operação BinaryOperator) Ele retorna um Coletor que realiza uma redução de seus elementos de entrada em um BinaryOperator especificado. O resultado é descrito como Opcional.
Redução de coletor estático público (identidade U, mapeador de funções, operação BinaryOperator) Ele retorna um Coletor que executa uma redução de seus elementos de entrada sob uma função de mapeamento especificada e BinaryOperator. Esta é uma generalização de redução (Object, BinaryOperator) que permite uma transformação dos elementos antes da redução.
Coletor estático público> groupingBy (classificador de função) Ele retorna um Coletor implementando uma operação 'agrupar por' em elementos de entrada do tipo T, agrupando elementos de acordo com uma função de classificação e retornando os resultados em um Mapa.
Coletor estático públicogroupingBy (classificador de função, coletor downstream) Ele retorna um Coletor implementando uma operação 'agrupar por' em cascata em elementos de entrada do tipo T, agrupando elementos de acordo com uma função de classificação e, em seguida, executando uma operação de redução nos valores associados a uma determinada chave usando o Coletor downstream especificado.
estática públicaAgrupamento de coletorBy (classificador de função, mapa de fornecedor, fábrica, coletor downstream) Ele retorna um Coletor implementando uma operação 'agrupar por' em cascata em elementos de entrada do tipo T, agrupando elementos de acordo com uma função de classificação e, em seguida, executando uma operação de redução nos valores associados a uma determinada chave usando o Coletor downstream especificado. O Mapa produzido pelo Coletor é criado com a função de fábrica fornecida.
Coletor estático público> groupingByConcurrent (classificador de função) Ele retorna um Coletor simultâneo implementando uma operação 'agrupar por' em elementos de entrada do tipo T, agrupando elementos de acordo com uma função de classificação.
Coletor estático públicogroupingByConcurrent (classificador de função, coletor downstream) Ele retorna um Coletor simultâneo implementando uma operação 'agrupar por' em cascata em elementos de entrada do tipo T, agrupando elementos de acordo com uma função de classificação e, em seguida, executando uma operação de redução nos valores associados a uma determinada chave usando o Coletor downstream especificado.
estática públicaAgrupamento de coletorByConcurrent (classificador de função, mapa de fornecedorFactory, coletor downstream) Ele retorna um Coletor simultâneo implementando uma operação 'agrupar por' em cascata em elementos de entrada do tipo T, agrupando elementos de acordo com uma função de classificação e, em seguida, executando uma operação de redução nos valores associados a uma determinada chave usando o Coletor downstream especificado. O ConcurrentMap produzido pelo Coletor é criado com a função de fábrica fornecida.
Coletor estático público> particionamentoBy (predicado predicado) Ele retorna um Coletor que particiona os elementos de entrada de acordo com um Predicado e os organiza em um Mapa . Não há garantias sobre o tipo, mutabilidade, serialização ou segurança de thread do Mapa retornado.
Coletor estático públicoparticionamentoBy (predicado predicado, coletor downstream) Ele retorna um Coletor que particiona os elementos de entrada de acordo com um Predicado, reduz os valores em cada partição de acordo com outro Coletor e os organiza em um Mapa cujos valores são o resultado da redução downstream.
Coletor estático públicotoMap (Função keyMapper, Função valueMapper) Ele retorna um Coletor que acumula elementos em um Mapa cujas chaves e valores são o resultado da aplicação das funções de mapeamento fornecidas aos elementos de entrada.
Coletor estático públicotoMap (Função keyMapper, Função valueMapper, BinaryOperator mergeFunction). Ele retorna um Coletor que acumula elementos em um Mapa cujas chaves e valores são o resultado da aplicação das funções de mapeamento fornecidas aos elementos de entrada.
estática públicaColetor toMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Ele retorna um Coletor que acumula elementos em um Mapa cujas chaves e valores são o resultado da aplicação das funções de mapeamento fornecidas aos elementos de entrada.
Coletor estático públicotoConcurrentMap(Função keyMapper, Função valueMapper) Ele retorna um Coletor simultâneo que acumula elementos em um ConcurrentMap cujas chaves e valores são o resultado da aplicação das funções de mapeamento fornecidas aos elementos de entrada.
Coletor estático públicotoConcurrentMap (Função keyMapper, Função valueMapper, BinaryOperator mergeFunction) Ele retorna um Coletor simultâneo que acumula elementos em um ConcurrentMap cujas chaves e valores são o resultado da aplicação das funções de mapeamento fornecidas aos elementos de entrada.
estática públicaColetor toConcurrentMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Ele retorna um Coletor simultâneo que acumula elementos em um ConcurrentMap cujas chaves e valores são o resultado da aplicação das funções de mapeamento fornecidas aos elementos de entrada.
coletor estático público resumindoInt (mapeador ToIntFunction) Ele retorna um Coletor que aplica uma função de mapeamento de produção interna a cada elemento de entrada e retorna estatísticas resumidas para os valores resultantes.
coletor estático público resumindoLong (mapeador ToLongFunction) Ele retorna um Coletor que aplica uma função de mapeamento de longa produção a cada elemento de entrada e retorna estatísticas resumidas para os valores resultantes.
coletor estático público resumindoDouble (mapeador ToDoubleFunction) Ele retorna um Coletor que aplica uma função de mapeamento de produção dupla a cada elemento de entrada e retorna estatísticas resumidas para os valores resultantes.

Exemplo de coletores Java: buscando dados como uma 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); } } 

Saída:

conversor de string para int
 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Exemplo de coletores Java: convertendo dados como um 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); } } 

Saída:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Exemplo de coletores Java: usando o método sum

 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); } } 

Saída:

 Sum of prices: 201000.0 Sum of id's: 15 

Exemplo de coletores Java: obtendo o preço médio do produto

 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); } } 

Saída:

 Average price is: 40200.0 

Exemplo de coletores Java: contando 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); } } 

Saída:

 Total elements : 5