logo

Collezionisti Java

Collectors è una classe finale che estende la classe Object. Fornisce operazioni di riduzione, come accumulare elementi in raccolte, riassumere elementi secondo vari criteri, ecc.

La classe Java Collectors fornisce vari metodi per gestire gli elementi

Metodi Descrizione
Collector statico pubblico averagingDouble(mapper ToDoubleFunction) Restituisce un Collector che produce la media aritmetica di una funzione a valore doppio applicata agli elementi di input. Se non sono presenti elementi, il risultato è 0.
Riduzione del raccoglitore statico pubblico (identità T, operazione BinaryOperator) Restituisce un Collector che esegue una riduzione dei suoi elementi di input in un BinaryOperator specificato utilizzando l'identità fornita.
Collector statico pubblicoriduzione(OperatoreBinario op) Restituisce un Collector che esegue una riduzione dei suoi elementi di input in un BinaryOperator specificato. Il risultato è descritto come Opzionale.
Riduzione del collettore statico pubblico (identità U, mappatore di funzioni, operazione BinaryOperator) Restituisce un Collector che esegue una riduzione dei suoi elementi di input in una funzione di mappatura e BinaryOperator specificati. Questa è una generalizzazione di reduce(Object, BinaryOperator) che consente una trasformazione degli elementi prima della riduzione.
Collector statico pubblico> groupingBy(Classificatore di funzioni) Restituisce un Collector che implementa un'operazione di 'raggruppamento per' su elementi di input di tipo T, raggruppando gli elementi in base a una funzione di classificazione e restituendo i risultati in una mappa.
Collector statico pubblicogroupingBy(Classificatore di funzioni, Collector downstream) Restituisce un Collector che implementa un'operazione di 'raggruppamento per' a cascata su elementi di input di tipo T, raggruppando gli elementi in base a una funzione di classificazione e quindi eseguendo un'operazione di riduzione sui valori associati a una determinata chiave utilizzando il Collector downstream specificato.
pubblico staticoRaggruppamento collettorePer (classificatore di funzioni, mappa fornitoreFabbrica, collettore a valle) Restituisce un Collector che implementa un'operazione di 'raggruppamento per' a cascata su elementi di input di tipo T, raggruppando gli elementi in base a una funzione di classificazione e quindi eseguendo un'operazione di riduzione sui valori associati a una determinata chiave utilizzando il Collector downstream specificato. La Mappa prodotta dal Collector viene creata con la funzione factory fornita.
Collector statico pubblico> groupingByConcurrent(Classificatore di funzioni) Restituisce un Collector simultaneo che implementa un'operazione di 'raggruppamento per' su elementi di input di tipo T, raggruppando gli elementi secondo una funzione di classificazione.
Collector statico pubblicogroupingByConcurrent(Classificatore di funzioni, Collector downstream) Restituisce un Collector simultaneo che implementa un'operazione di 'raggruppamento per' a cascata su elementi di input di tipo T, raggruppando gli elementi in base a una funzione di classificazione e quindi eseguendo un'operazione di riduzione sui valori associati a una determinata chiave utilizzando il Collector downstream specificato.
pubblico staticoRaggruppamento collettorePerConcorrente(Classificatore di funzioni, Mappa fornitoreFabbrica, Collettore a valle) Restituisce un Collector simultaneo che implementa un'operazione di 'raggruppamento per' a cascata su elementi di input di tipo T, raggruppando gli elementi in base a una funzione di classificazione e quindi eseguendo un'operazione di riduzione sui valori associati a una determinata chiave utilizzando il Collector downstream specificato. La ConcurrentMap prodotta dal Collector viene creata con la funzione factory fornita.
Collector statico pubblico> partizionamentoPer(predicato predicato) Restituisce un Collector che suddivide gli elementi di input in base a un Predicato e li organizza in una Mappa . Non sono previste garanzie sul tipo, sulla mutabilità, sulla serializzabilità o sulla sicurezza dei thread della mappa restituita.
Collector statico pubblicopartizionamentoBy(Predicato predicato, Collector downstream) Restituisce un Collector che partiziona gli elementi di input secondo un Predicato, riduce i valori in ciascuna partizione secondo un altro Collector e li organizza in una Mappa i cui valori sono il risultato della riduzione a valle.
Collector statico pubblicotoMap(Funzione keyMapper, Funzione valueMapper) Restituisce un Collector che accumula elementi in una Map le cui chiavi e valori sono il risultato dell'applicazione delle funzioni di mappatura fornite agli elementi di input.
Collector statico pubblicotoMap (Funzione keyMapper, Funzione valueMapper, BinaryOperator mergeFunction). Restituisce un Collector che accumula elementi in una Map le cui chiavi e valori sono il risultato dell'applicazione delle funzioni di mappatura fornite agli elementi di input.
pubblico staticoCollector toMap (Funzione keyMapper, Funzione valueMapper, BinaryOperator mergeFunction, Fornitore mapSupplier) Restituisce un Collector che accumula elementi in una Map le cui chiavi e valori sono il risultato dell'applicazione delle funzioni di mappatura fornite agli elementi di input.
Collector statico pubblicotoConcurrentMap(Funzione keyMapper, Funzione valueMapper) Restituisce un Collector simultaneo che accumula elementi in un ConcurrentMap le cui chiavi e valori sono il risultato dell'applicazione delle funzioni di mappatura fornite agli elementi di input.
Collector statico pubblicotoConcurrentMap(Funzione keyMapper, Funzione valueMapper, BinaryOperator mergeFunction) Restituisce un Collector simultaneo che accumula elementi in un ConcurrentMap le cui chiavi e valori sono il risultato dell'applicazione delle funzioni di mappatura fornite agli elementi di input.
pubblico staticoCollector toConcurrentMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Restituisce un Collector simultaneo che accumula elementi in un ConcurrentMap le cui chiavi e valori sono il risultato dell'applicazione delle funzioni di mappatura fornite agli elementi di input.
Collector statico pubblico che riassumeInt(mapper ToIntFunction) Restituisce un Collector che applica una funzione di mappatura che produce int a ciascun elemento di input e restituisce statistiche di riepilogo per i valori risultanti.
Collector statico pubblico che riepilogaLong (mapper ToLongFunction) Restituisce un Collector che applica una funzione di mappatura di lunga durata a ciascun elemento di input e restituisce statistiche di riepilogo per i valori risultanti.
Collector statico pubblico che riassume Double (mapper ToDoubleFunction) Restituisce un Collector che applica una funzione di mappatura a doppia produzione a ciascun elemento di input e restituisce statistiche di riepilogo per i valori risultanti.

Esempio di raccoglitori Java: recupero dei dati come elenco

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

Produzione:

 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Esempio di raccoglitori Java: conversione dei dati come set

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

Produzione:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Esempio di collettori Java: utilizzo del metodo somma

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

Produzione:

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

Esempio di collezionisti Java: ottenere il prezzo medio del prodotto

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

Produzione:

 Average price is: 40200.0 

Esempio di collezionisti Java: conteggio degli elementi

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

Produzione:

 Total elements : 5