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ý kolektor | 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 | 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ý kolektor | 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á statika | 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 | 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ý kolektor | 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á statika | 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 | Vrací kolektor, který rozděluje vstupní prvky podle predikátu a organizuje je do mapy |
veřejný statický kolektor | 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ý kolektor | 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ý kolektor | 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á statika | 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ý kolektor | 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 | 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á statika | 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