logo

Java gyűjtők

A Collectors egy utolsó osztály, amely kiterjeszti az Object osztályt. Olyan redukciós műveleteket biztosít, mint az elemek gyűjteménybe gyűjtése, az elemek összegzése különböző szempontok szerint stb.

A Java Collectors osztály különféle módszereket kínál az elemek kezelésére

Mód Leírás
nyilvános statikus gyűjtőátlagolásDouble (ToDoubleFunction leképező) Egy gyűjtőt ad vissza, amely a bemeneti elemekre alkalmazott kettős értékű függvény számtani átlagát állítja elő. Ha nincsenek jelen elemek, az eredmény 0.
nyilvános statikus gyűjtőcsökkentés (T azonosság, BinaryOperator op) Egy gyűjtőt ad vissza, amely végrehajtja a bemeneti elemeinek redukcióját egy megadott BinaryOperator alatt a megadott identitás használatával.
nyilvános statikus gyűjtőcsökkentése (BinaryOperator op) Egy gyűjtőt ad vissza, amely egy meghatározott BinaryOperator alatt redukálja a bemeneti elemeit. Az eredmény opcionálisként van leírva.
nyilvános statikus gyűjtőcsökkentés (U-azonosság, függvényleképező, BinaryOperator op) Egy Collector-t ad vissza, amely végrehajtja a bemeneti elemeinek redukcióját egy meghatározott leképezési függvény és BinaryOperator alatt. Ez a redukció (Object, BinaryOperator) általánosítása, amely lehetővé teszi az elemek átalakítását a redukció előtt.
nyilvános statikus gyűjtő> groupingBy (függvényosztályozó) Egy gyűjtőt ad vissza, amely egy 'csoportosítás szerint' műveletet valósít meg a T típusú bemeneti elemeken, csoportosítja az elemeket egy osztályozási függvény szerint, és az eredményeket egy Térképben adja vissza.
nyilvános statikus gyűjtőgroupingBy (függvényosztályozó, gyűjtő downstream) Egy gyűjtőt ad vissza, amely lépcsőzetes 'csoportosítás szerint' műveletet hajt végre T típusú bemeneti elemeken, csoportosítja az elemeket egy osztályozási függvény szerint, majd redukciós műveletet hajt végre az adott kulcshoz tartozó értékeken a megadott downstream Collector segítségével.
nyilvános statikusGyűjtőcsoportosítás szerint (Funkció osztályozó, Szállítói térképGyár, Gyűjtő downstream) Egy gyűjtőt ad vissza, amely lépcsőzetes 'csoportosítás szerint' műveletet hajt végre T típusú bemeneti elemeken, csoportosítja az elemeket egy osztályozási függvény szerint, majd redukciós műveletet hajt végre az adott kulcshoz tartozó értékeken a megadott downstream Collector segítségével. A Collector által készített térkép a mellékelt gyári funkcióval készül.
nyilvános statikus gyűjtő> GroupingByConcurrent (függvényosztályozó) Egy párhuzamos gyűjtőt ad vissza, amely egy 'csoportosítás szerint' műveletet valósít meg T típusú bemeneti elemeken, csoportosítva az elemeket egy osztályozási függvény szerint.
nyilvános statikus gyűjtőgroupingByConcurrent (függvényosztályozó, gyűjtő downstream) Egy párhuzamos gyűjtőt ad vissza, amely lépcsőzetes 'csoportosítás szerint' műveletet hajt végre a T típusú bemeneti elemeken, csoportosítja az elemeket egy osztályozási függvény szerint, majd redukciós műveletet hajt végre az adott kulcshoz társított értékeken a megadott downstream Collector segítségével.
nyilvános statikusGyűjtőcsoportosítás Egyidejűleg (Funkcióosztályozó, Szállítói térképGyár, Gyűjtő downstream) Egy párhuzamos gyűjtőt ad vissza, amely lépcsőzetes 'csoportosítás szerint' műveletet hajt végre a T típusú bemeneti elemeken, csoportosítja az elemeket egy osztályozási függvény szerint, majd redukciós műveletet hajt végre az adott kulcshoz társított értékeken a megadott downstream Collector segítségével. A Collector által készített ConcurrentMap a mellékelt gyári funkcióval jön létre.
nyilvános statikus gyűjtő> partitioningBy(Predikátum predikátum) Egy gyűjtőt ad vissza, amely a bemeneti elemeket predikátum szerint particionálja, és leképezésbe rendezi . Nincs garancia a visszaküldött térkép típusára, változtathatóságára, szerializálhatóságára vagy szálbiztonságára vonatkozóan.
nyilvános statikus gyűjtőparticionálás (predikátum predikátum, gyűjtő lefelé) Egy gyűjtőt ad vissza, amely egy predikátum szerint particionálja a bemeneti elemeket, lecsökkenti az egyes partíciók értékeit egy másik gyűjtő szerint, és egy leképezésbe rendezi, amelynek értékei a downstream redukció eredménye.
nyilvános statikus gyűjtőtoMap (Function keyMapper, Function valueMapper) Egy gyűjtőt ad vissza, amely olyan elemeket halmoz fel egy térképbe, amelynek kulcsai és értékei a megadott leképezési függvények bemeneti elemekre történő alkalmazásának eredménye.
nyilvános statikus gyűjtőtoMap ( Function keyMapper , Function valueMapper , BinaryOperator mergeFunction ) . Egy gyűjtőt ad vissza, amely olyan elemeket halmoz fel egy térképbe, amelynek kulcsai és értékei a megadott leképezési függvények bemeneti elemekre történő alkalmazásának eredménye.
nyilvános statikusCollector to Map (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Beszállítói térképszállító) Egy gyűjtőt ad vissza, amely olyan elemeket halmoz fel egy térképbe, amelynek kulcsai és értékei a megadott leképezési függvények bemeneti elemekre történő alkalmazásának eredménye.
nyilvános statikus gyűjtőto ConcurrentMap (Function keyMapper, Function valueMapper) Egy párhuzamos gyűjtőt ad vissza, amely összegyűjti az elemeket egy ConcurrentMap-be, amelynek kulcsai és értékei a megadott leképezési függvények bemeneti elemekre történő alkalmazásának eredménye.
nyilvános statikus gyűjtőto ConcurrentMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction) Egy párhuzamos gyűjtőt ad vissza, amely összegyűjti az elemeket egy ConcurrentMap-be, amelynek kulcsai és értékei a megadott leképezési függvények bemeneti elemekre történő alkalmazásának eredménye.
nyilvános statikusCollector to ConcurrentMap (Funkciókulcsleképező, Funkcióértékleképező, BinaryOperator mergeFunction, Beszállítói térképszállító) Egy párhuzamos gyűjtőt ad vissza, amely összegyűjti az elemeket egy ConcurrentMap-be, amelynek kulcsai és értékei a megadott leképezési függvények bemeneti elemekre történő alkalmazásának eredménye.
nyilvános statikus Collector summarisingInt (ToIntFunction leképező) Egy gyűjtőt ad vissza, amely minden bemeneti elemre egy int-előállító leképezési függvényt alkalmaz, és összefoglaló statisztikákat ad vissza az eredményül kapott értékekről.
nyilvános statikus Collector summarisingLong (ToLongFunction leképező) Egy gyűjtőt ad vissza, amely egy hosszú ideig tartó leképezési függvényt alkalmaz minden bemeneti elemre, és összefoglaló statisztikákat ad vissza az eredményül kapott értékekről.
nyilvános statikus gyűjtő összefoglalóDouble (ToDoubleFunction leképező) Egy gyűjtőt ad vissza, amely minden bemeneti elemre duplán előállító leképezési függvényt alkalmaz, és összefoglaló statisztikákat ad vissza az eredményül kapott értékekről.

Java gyűjtők Példa: Adatok lekérése listaként

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

Kimenet:

 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Java gyűjtők Példa: Adatok konvertálása készletként

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

Kimenet:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Java gyűjtők Példa: összeg módszer használata

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

Kimenet:

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

Java gyűjtők Példa: Termékek átlagos ára

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

Kimenet:

 Average price is: 40200.0 

Java gyűjtők Példa: Elemek számlálása

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

Kimenet:

 Total elements : 5