Collectors je zadnji razred, ki razširja razred Object. Omogoča redukcijske operacije, kot je kopičenje elementov v zbirke, seštevanje elementov po različnih kriterijih itd.
Razred Java Collectors nudi različne metode za obravnavo elementov
niz java vsebuje
Metode | Opis |
---|---|
javni statični zbiralnik averagingDouble(ToDoubleFunction preslikava) | Vrne zbiralnik, ki ustvari aritmetično sredino funkcije z dvojno vrednostjo, uporabljeno za vhodne elemente. Če ni elementov, je rezultat 0. |
zmanjšanje javnega statičnega zbiralnika (identiteta T, op. BinaryOperator) | Vrne Collector, ki izvede redukcijo svojih vhodnih elementov pod določenim BinaryOperator z uporabo podane identitete. |
javni statični zbiralnik | Vrne Collector, ki izvede redukcijo svojih vhodnih elementov pod določenim BinaryOperator. Rezultat je opisan kot neobvezen. |
zmanjšanje javnega statičnega zbiralnika (identiteta U, preslikava funkcij, op. BinaryOperator) | Vrne Collector, ki izvede redukcijo svojih vhodnih elementov pod določeno funkcijo preslikave in BinaryOperator. To je posplošitev redukcije (Object, BinaryOperator), ki omogoča transformacijo elementov pred redukcijo. |
javni statični zbiralnik | Vrne zbiralnik, ki izvaja operacijo 'združi po' na vhodnih elementih tipa T, grupira elemente glede na klasifikacijsko funkcijo in vrne rezultate v zemljevidu. |
javni statični zbiralnik | Vrne zbiralnik, ki izvaja kaskadno operacijo 'združevanje po' na vhodnih elementih tipa T, grupira elemente glede na klasifikacijsko funkcijo in nato izvede operacijo redukcije vrednosti, povezanih z danim ključem, z uporabo podanega spodnjega zbiralnika. |
javna statika | Vrne zbiralnik, ki izvaja kaskadno operacijo 'združevanje po' na vhodnih elementih tipa T, grupira elemente glede na klasifikacijsko funkcijo in nato izvede operacijo redukcije vrednosti, povezanih z danim ključem, z uporabo podanega spodnjega zbiralnika. Zemljevid, ki ga izdela Collector, je ustvarjen s priloženo tovarniško funkcijo. |
javni statični zbiralnik | Vrne sočasni zbiralnik, ki izvaja operacijo 'združi po' na vhodnih elementih tipa T in združuje elemente glede na klasifikacijsko funkcijo. |
javni statični zbiralnik | Vrne sočasni zbiralnik, ki izvaja kaskadno operacijo 'združevanje po' na vhodnih elementih tipa T, združuje elemente v skupine glede na klasifikacijsko funkcijo in nato izvaja operacijo redukcije vrednosti, povezanih z danim ključem, z uporabo podanega zbiralnika nižjega toka. |
javna statika | Vrne sočasni zbiralnik, ki izvaja kaskadno operacijo 'združevanje po' na vhodnih elementih tipa T, združuje elemente v skupine glede na klasifikacijsko funkcijo in nato izvaja operacijo redukcije vrednosti, povezanih z danim ključem, z uporabo podanega zbiralnika nižjega toka. ConcurrentMap, ki ga izdela Collector, je ustvarjen s priloženo tovarniško funkcijo. |
javni statični zbiralnik | Vrne zbiralnik, ki razdeli vhodne elemente glede na predikat in jih organizira v zemljevid |
javni statični zbiralnik | Vrne zbiralnik, ki razdeli vhodne elemente glede na predikat, zmanjša vrednosti v vsaki particiji glede na drug zbiralnik in jih organizira v zemljevid, katerega vrednosti so rezultat znižanja navzdol. |
javni statični zbiralnik | Vrne zbiralnik, ki kopiči elemente v zemljevid, katerega ključi in vrednosti so rezultat uporabe navedenih funkcij preslikave za vhodne elemente. |
javni statični zbiralnik | Vrne zbiralnik, ki kopiči elemente v zemljevid, katerega ključi in vrednosti so rezultat uporabe navedenih funkcij preslikave za vhodne elemente. |
javna statika | Vrne zbiralnik, ki kopiči elemente v zemljevid, katerega ključi in vrednosti so rezultat uporabe navedenih funkcij preslikave za vhodne elemente. |
javni statični zbiralnik | Vrne sočasni zbiralnik, ki kopiči elemente v ConcurrentMap, katerega ključi in vrednosti so rezultat uporabe navedenih funkcij preslikave za vhodne elemente. |
javni statični zbiralnik | Vrne sočasni zbiralnik, ki kopiči elemente v ConcurrentMap, katerega ključi in vrednosti so rezultat uporabe navedenih funkcij preslikave za vhodne elemente. |
javna statika | Vrne sočasni zbiralnik, ki kopiči elemente v ConcurrentMap, katerega ključi in vrednosti so rezultat uporabe navedenih funkcij preslikave za vhodne elemente. |
javni statični zbiralnik summarizingInt(ToIntFunction preslikava) | Vrne zbiralnik, ki za vsak vhodni element uporabi funkcijo preslikave, ki proizvaja int, in vrne statistiko povzetka za nastale vrednosti. |
javni statični zbiralnik summarizingLong(ToLongFunction preslikava) | Vrne zbiralnik, ki za vsak vhodni element uporabi dolgoročno funkcijo preslikave in vrne povzetek statistike za nastale vrednosti. |
javni statični zbiralnik summarizingDouble(ToDoubleFunction preslikava) | Vrne zbiralnik, ki za vsak vhodni element uporabi dvojno proizvajajočo funkcijo preslikave in vrne povzetek statistike za nastale vrednosti. |
Primer zbiralcev Java: pridobivanje podatkov kot seznama
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); } }
Izhod:
[25000.0, 30000.0, 28000.0, 28000.0, 90000.0]
Primer zbiralcev Java: pretvorba podatkov kot niza
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); } }
Izhod:
[25000.0, 30000.0, 28000.0, 90000.0]
Primer zbiralcev Java: uporaba metode vsote
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); } }
Izhod:
Sum of prices: 201000.0 Sum of id's: 15
Primer zbiralcev Java: pridobivanje povprečne cene izdelka
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); } }
Izhod:
Average price is: 40200.0
Primer zbiralcev Java: štetje elementov
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); } }
Izhod:
Total elements : 5