logo

Zberatelia Java

Collectors je posledná trieda, ktorá rozširuje triedu Object. Poskytuje redukčné operácie, ako je akumulácia prvkov do kolekcií, sumarizácia prvkov podľa rôznych kritérií atď.

Trieda Java Collectors poskytuje rôzne metódy na prácu s prvkami

d žabka
Metódy Popis
public static Collector averagingDouble (mapovač ToDoubleFunction) Vracia kolektor, ktorý vytvára aritmetický priemer funkcie s dvojitou hodnotou aplikovanou na vstupné prvky. Ak nie sú prítomné žiadne prvky, výsledok je 0.
redukcia verejného statického kolektora (T identita, BinaryOperator op) Vracia Collector, ktorý vykonáva redukciu svojich vstupných prvkov pod špecifikovaným BinaryOperatorom pomocou poskytnutej identity.
verejný statický kolektorzníženie (BinaryOperator op) Vracia Collector, ktorý vykonáva redukciu svojich vstupných prvkov pod špecifikovaným BinaryOperatorom. Výsledok je opísaný ako voliteľný.
redukcia verejného statického kolektora (identita U, mapovač funkcií, binárny operátor op) Vracia Collector, ktorý vykonáva redukciu svojich vstupných prvkov pod špecifikovanou mapovacou funkciou a BinaryOperator. Toto je zovšeobecnenie redukcie (Object, BinaryOperator), ktoré umožňuje transformáciu prvkov pred redukciou.
verejný statický kolektor> groupingBy(klasifikátor funkcie) Vráti kolektor, ktorý implementuje operáciu „zoskupiť podľa“ na vstupných prvkoch typu T, zoskupí prvky podľa klasifikačnej funkcie a vráti výsledky v mape.
verejný statický kolektorgroupingBy(klasifikátor funkcií, zberač downstream) Vracia kolektor, ktorý implementuje kaskádovú operáciu „zoskupiť podľa“ na vstupných prvkoch typu T, zoskupí prvky podľa klasifikačnej funkcie a potom vykoná operáciu redukcie hodnôt priradených k danému kľúču pomocou špecifikovaného downstream kolektora.
verejná statikaZoskupenie kolektorovPodľa (klasifikátor funkcií, Mapa dodávateľaFactory, Kolektor nadol) Vracia kolektor, ktorý implementuje kaskádovú operáciu „zoskupiť podľa“ na vstupných prvkoch typu T, zoskupí prvky podľa klasifikačnej funkcie a potom vykoná operáciu redukcie hodnôt priradených k danému kľúču pomocou špecifikovaného downstream kolektora. Mapa vytvorená Collectorom je vytvorená pomocou dodanej továrenskej funkcie.
verejný statický kolektor> groupingByConcurrent(klasifikátor funkcií) Vracia súbežný kolektor implementujúci operáciu „zoskupiť podľa“ na vstupných prvkoch typu T, pričom prvky zoskupuje podľa klasifikačnej funkcie.
verejný statický kolektorgroupingByConcurrent(klasifikátor funkcií, zberač) Vracia súbežný kolektor, ktorý implementuje kaskádovú operáciu „zoskupiť podľa“ na vstupných prvkoch typu T, zoskupí prvky podľa klasifikačnej funkcie a potom vykoná operáciu redukcie hodnôt priradených k danému kľúču pomocou špecifikovaného downstream kolektora.
verejná statikaZoskupenie kolektorovPodľa Súbežného (klasifikátor funkcií, Mapa dodávateľaFactory, Kolektor nadol) Vracia súbežný kolektor, ktorý implementuje kaskádovú operáciu „zoskupiť podľa“ na vstupných prvkoch typu T, zoskupí prvky podľa klasifikačnej funkcie a potom vykoná operáciu redukcie hodnôt priradených k danému kľúču pomocou špecifikovaného downstream kolektora. Súbežná mapa vytvorená Collectorom je vytvorená s dodanou továrenskou funkciou.
verejný statický kolektor> partitioningBy(Predikátový predikát) Vracia kolektor, ktorý rozdeľuje vstupné prvky podľa predikátu a organizuje ich do mapy . Neexistujú žiadne záruky typu, meniteľnosti, serializácie alebo bezpečnosti vlákien vrátenej mapy.
verejný statický kolektorpartitioningBy(predikát predikátu, zberateľ po prúde) Vracia kolektor, ktorý rozdeľuje vstupné prvky podľa predikátu, redukuje hodnoty v každom oddiele podľa iného kolektora a organizuje ich do mapy, ktorej hodnoty sú výsledkom redukcie po prúde.
verejný statický kolektortoMap(Function keyMapper, Function valueMapper) Vracia kolektor, ktorý akumuluje prvky do mapy, ktorej kľúče a hodnoty sú výsledkom aplikácie poskytnutých mapovacích funkcií na vstupné prvky.
verejný statický kolektortoMap ( Function keyMapper , Function valueMapper , BinaryOperator mergeFunction ) . Vracia kolektor, ktorý akumuluje prvky do mapy, ktorej kľúče a hodnoty sú výsledkom aplikácie poskytnutých mapovacích funkcií na vstupné prvky.
verejná statikaCollector toMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Vracia kolektor, ktorý akumuluje prvky do mapy, ktorej kľúče a hodnoty sú výsledkom aplikácie poskytnutých mapovacích funkcií na vstupné prvky.
verejný statický kolektortoConcurrentMap(Function keyMapper, Function valueMapper) Vracia súbežný kolektor, ktorý akumuluje prvky do ConcurrentMap, ktorej kľúče a hodnoty sú výsledkom aplikácie poskytnutých mapovacích funkcií na vstupné prvky.
verejný statický kolektortoConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction) Vracia súbežný kolektor, ktorý akumuluje prvky do ConcurrentMap, ktorej kľúče a hodnoty sú výsledkom aplikácie poskytnutých mapovacích funkcií na vstupné prvky.
verejná statikaCollector to ConcurrentMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Vracia súbežný kolektor, ktorý akumuluje prvky do ConcurrentMap, ktorej kľúče a hodnoty sú výsledkom aplikácie poskytnutých mapovacích funkcií na vstupné prvky.
verejný statický kolektor sumarizujúciInt (mapovač ToIntFunction) Vracia Collector, ktorý aplikuje int-produkčnú mapovaciu funkciu na každý vstupný prvok a vracia súhrnnú štatistiku pre výsledné hodnoty.
verejný statický kolektor sumarizujúciLong (mapovač ToLongFunction) Vracia Collector, ktorý aplikuje dlho produkčnú mapovaciu funkciu na každý vstupný prvok a vracia súhrnnú štatistiku pre výsledné hodnoty.
verejný statický kolektor sumarizujúciDouble (mapovač ToDoubleFunction) Vracia Collector, ktorý aplikuje dvojitú produkčnú mapovaciu funkciu na každý vstupný prvok a vracia súhrnnú štatistiku pre výsledné hodnoty.

Java Collectors Príklad: Získavanie údajov ako zoznam

 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ýkon:

 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Java Collectors Príklad: Konverzia údajov ako súboru

 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ýkon:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Java Collectors Príklad: použitie metódy súč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ýkon:

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

Java Collectors Príklad: Získanie priemernej 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ýkon:

stredový obrázok v css
 Average price is: 40200.0 

Java Collectors Príklad: Počítanie prvkov

 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ýkon:

 Total elements : 5