logo

Sběratelé Java

Collectors je poslední třída, která rozšiřuje třídu Object. Poskytuje redukční operace, jako je akumulace prvků do kolekcí, sumarizace prvků podle různých kritérií atd.

Třída Java Collectors poskytuje různé metody pro práci s prvky

Metody Popis
public static Collector averagingDouble (mapovač ToDoubleFunction) Vrací kolektor, který vytváří aritmetický průměr funkce s dvojitou hodnotou aplikované na vstupní prvky. Pokud nejsou přítomny žádné prvky, výsledek je 0.
redukce veřejného statického kolektoru (T identita, BinaryOperator op) Vrací Collector, který provádí redukci svých vstupních prvků pod zadaným BinaryOperatorem pomocí poskytnuté identity.
veřejný statický kolektorsnížení (BinaryOperator op) Vrací Collector, který provádí redukci svých vstupních prvků pod zadaným BinaryOperatorem. Výsledek je popsán jako volitelný.
redukce veřejného statického kolektoru (identita U, mapovač funkcí, BinaryOperator op) Vrací Collector, který provádí redukci svých vstupních prvků pod zadanou mapovací funkcí a BinaryOperator. Toto je zobecnění redukování (Object, BinaryOperator), které umožňuje transformaci prvků před redukcí.
veřejný statický kolektor> groupingBy(klasifikátor funkcí) Vrací Collector implementující operaci 'seskupit podle' na vstupních prvcích typu T, seskupení prvků podle klasifikační funkce a vrácení výsledků v mapě.
veřejný statický kolektorgroupingBy(klasifikátor funkcí, kolektor po proudu) Vrací Collector implementující kaskádovou operaci 'seskupit podle' na vstupních prvcích typu T, seskupení prvků podle klasifikační funkce a poté provedení operace redukce na hodnotách spojených s daným klíčem pomocí zadaného downstream kolektoru.
veřejná statikaSeskupení kolektorůPodle(klasifikátor funkcí, mapa dodavatelůFactory, kolektor po proudu) Vrací Collector implementující kaskádovou operaci 'seskupit podle' na vstupních prvcích typu T, seskupení prvků podle klasifikační funkce a poté provedení operace redukce na hodnotách spojených s daným klíčem pomocí zadaného downstream kolektoru. Mapa vytvořená Collectorem je vytvořena pomocí dodané tovární funkce.
veřejný statický kolektor> groupingByConcurrent(klasifikátor funkcí) Vrací souběžný kolektor implementující operaci „seskupit podle“ na vstupních prvcích typu T, seskupení prvků podle klasifikační funkce.
veřejný statický kolektorgroupingByConcurrent(klasifikátor funkcí, kolektor po proudu) Vrací souběžný kolektor implementující kaskádovou operaci „seskupit podle“ na vstupních prvcích typu T, seskupení prvků podle klasifikační funkce a poté provedení operace redukce na hodnotách spojených s daným klíčem pomocí zadaného downstream kolektoru.
veřejná statikaSeskupení kolektorůByConcurrent(klasifikátor funkcí, Mapa dodavatelůFactory, kolektor downstream) Vrací souběžný kolektor implementující kaskádovou operaci „seskupit podle“ na vstupních prvcích typu T, seskupení prvků podle klasifikační funkce a poté provedení operace redukce na hodnotách spojených s daným klíčem pomocí zadaného downstream kolektoru. ConcurrentMap vytvořená Collectorem je vytvořena pomocí dodané tovární funkce.
veřejný statický kolektor> partitioningBy(predikátový predikát) Vrací kolektor, který rozděluje vstupní prvky podle predikátu a organizuje je do mapy . Neexistují žádné záruky ohledně typu, proměnlivosti, serializace nebo bezpečnosti vláken vrácené mapy.
veřejný statický kolektorpartitioningBy(predikát predikátu, kolektor po proudu) Vrací kolektor, který rozděluje vstupní prvky podle predikátu, redukuje hodnoty v každém oddílu podle jiného kolektoru a organizuje je do mapy, jejíž hodnoty jsou výsledkem následné redukce.
veřejný statický kolektortoMap(Function keyMapper, Function valueMapper) Vrací kolektor, který shromažďuje prvky do mapy, jejíž klíče a hodnoty jsou výsledkem aplikace poskytnutých mapovacích funkcí na vstupní prvky.
veřejný statický kolektortoMap ( Function keyMapper , Function valueMapper , BinaryOperator mergeFunction ) . Vrací kolektor, který shromažďuje prvky do mapy, jejíž klíče a hodnoty jsou výsledkem aplikace poskytnutých mapovacích funkcí na vstupní prvky.
veřejná statikaCollector toMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Vrací kolektor, který shromažďuje prvky do mapy, jejíž klíče a hodnoty jsou výsledkem aplikace poskytnutých mapovacích funkcí na vstupní prvky.
veřejný statický kolektortoConcurrentMap(Function keyMapper, Function valueMapper) Vrací souběžný kolektor, který shromažďuje prvky do ConcurrentMap, jehož klíče a hodnoty jsou výsledkem aplikace poskytnutých mapovacích funkcí na vstupní prvky.
veřejný statický kolektortoConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction) Vrací souběžný kolektor, který shromažďuje prvky do ConcurrentMap, jehož klíče a hodnoty jsou výsledkem aplikace poskytnutých mapovacích funkcí na vstupní prvky.
veřejná statikaCollector to ConcurrentMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Vrací souběžný kolektor, který shromažďuje prvky do ConcurrentMap, jehož klíče a hodnoty jsou výsledkem aplikace poskytnutých mapovacích funkcí na vstupní prvky.
veřejný statický kolektor summarizingInt (mapovač ToIntFunction) Vrací Collector, který aplikuje int-produkující mapovací funkci na každý vstupní prvek, a vrací souhrnné statistiky pro výsledné hodnoty.
veřejný statický kolektor summarizingLong (mapovač ToLongFunction) Vrací Collector, který aplikuje dlouhoprodukující mapovací funkci na každý vstupní prvek, a vrací souhrnné statistiky pro výsledné hodnoty.
veřejný statický kolektor summarizingDouble (mapovač ToDoubleFunction) Vrací Collector, který aplikuje dvojitou produkční mapovací funkci na každý vstupní prvek, a vrací souhrnné statistiky pro výsledné hodnoty.

Java Collectors Příklad: Načítání dat jako seznam

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

Výstup:

 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Java Collectors Příklad: Převod dat jako sady

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

Výstup:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Java Collectors Příklad: použití metody součtu

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

Výstup:

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

Java Collectors Příklad: Získání průměrné ceny produktu

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

Výstup:

 Average price is: 40200.0 

Java Collectors Příklad: Počítání prvků

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

Výstup:

 Total elements : 5