Collectors je zadnja klasa koja proširuje klasu Object. Omogućuje operacije smanjivanja, kao što je gomilanje elemenata u zbirke, sažimanje elemenata prema različitim kriterijima itd.
Klasa Java Collectors pruža različite metode za rad s elementima
Metode | Opis |
---|---|
javni statički kolektor averagingDouble(ToDoubleFunction maper) | Vraća kolektor koji proizvodi aritmetičku sredinu funkcije dvostruke vrijednosti primijenjene na ulazne elemente. Ako nijedan element nije prisutan, rezultat je 0. |
public static Collector redukcija (T identitet, BinaryOperator op) | Vraća kolektor koji izvodi redukciju svojih ulaznih elemenata pod navedenim binarnim operatorom koristeći navedeni identitet. |
javni statički sakupljač | Vraća kolektor koji izvodi redukciju svojih ulaznih elemenata pod određenim BinarnimOperatorom. Rezultat je opisan kao izborni. |
smanjenje javnog statičkog kolektora (U identitet, Maper funkcije, BinaryOperator op) | Vraća kolektor koji izvodi redukciju svojih ulaznih elemenata pod navedenom funkcijom mapiranja i binarnim operatorom. Ovo je generalizacija redukcije (Object, BinaryOperator) koja dopušta transformaciju elemenata prije redukcije. |
javni statički sakupljač | Vraća kolektor koji implementira operaciju 'grupiraj po' na ulaznim elementima tipa T, grupira elemente prema funkciji klasifikacije i vraća rezultate u mapi. |
javni statički sakupljač | Vraća kolektor koji implementira kaskadnu operaciju 'grupiranja po' na ulaznim elementima tipa T, grupirajući elemente prema funkciji klasifikacije, a zatim izvodeći operaciju redukcije na vrijednostima povezanim s danim ključem pomoću navedenog nizvodnog kolektora. |
javna statičnost | Vraća kolektor koji implementira kaskadnu operaciju 'grupiranja po' na ulaznim elementima tipa T, grupirajući elemente prema funkciji klasifikacije, a zatim izvodeći operaciju redukcije na vrijednostima povezanim s danim ključem pomoću navedenog nizvodnog kolektora. Karta koju proizvodi Collector stvorena je s isporučenom tvorničkom funkcijom. |
javni statički sakupljač | Vraća istovremeni sakupljač koji implementira operaciju 'grupiraj po' na ulaznim elementima tipa T, grupirajući elemente prema funkciji klasifikacije. |
javni statički sakupljač | Vraća istovremeni sakupljač koji implementira kaskadnu operaciju 'grupiranja po' na ulaznim elementima tipa T, grupirajući elemente prema funkciji klasifikacije, a zatim izvodeći operaciju redukcije na vrijednostima povezanim s danim ključem pomoću navedenog nizvodnog sakupljača. |
javna statičnost | Vraća istovremeni sakupljač koji implementira kaskadnu operaciju 'grupiranja po' na ulaznim elementima tipa T, grupirajući elemente prema funkciji klasifikacije, a zatim izvodeći operaciju redukcije na vrijednostima povezanim s danim ključem pomoću navedenog nizvodnog sakupljača. ConcurrentMap koji proizvodi Collector kreira se isporučenom tvorničkom funkcijom. |
javni statički sakupljač | Vraća kolektor koji dijeli ulazne elemente prema predikatu i organizira ih u kartu |
javni statički sakupljač | Vraća kolektor koji particionira ulazne elemente prema predikatu, smanjuje vrijednosti u svakoj particiji prema drugom kolektoru i organizira ih u mapu čije su vrijednosti rezultat nizvodne redukcije. |
javni statički sakupljač | Vraća kolektor koji akumulira elemente u mapu čiji su ključevi i vrijednosti rezultat primjene danih funkcija mapiranja na ulazne elemente. |
javni statički sakupljač | Vraća kolektor koji akumulira elemente u mapu čiji su ključevi i vrijednosti rezultat primjene danih funkcija mapiranja na ulazne elemente. |
javna statičnost | Vraća kolektor koji akumulira elemente u mapu čiji su ključevi i vrijednosti rezultat primjene danih funkcija mapiranja na ulazne elemente. |
javni statički sakupljač | Vraća istovremeni sakupljač koji akumulira elemente u ConcurrentMap čiji su ključevi i vrijednosti rezultat primjene danih funkcija mapiranja na ulazne elemente. |
javni statički sakupljač | Vraća istovremeni sakupljač koji akumulira elemente u ConcurrentMap čiji su ključevi i vrijednosti rezultat primjene danih funkcija mapiranja na ulazne elemente. |
javna statičnost | Vraća istovremeni sakupljač koji akumulira elemente u ConcurrentMap čiji su ključevi i vrijednosti rezultat primjene danih funkcija mapiranja na ulazne elemente. |
javni statički sakupljač summarizingInt(ToIntFunction maper) | Vraća sakupljač koji primjenjuje funkciju mapiranja koja proizvodi int na svaki ulazni element i vraća sažetak statistike za rezultirajuće vrijednosti. |
javni statički sakupljač summarizingLong(ToLongFunction maper) | Vraća sakupljač koji primjenjuje dugotrajnu funkciju mapiranja na svaki ulazni element i vraća sažetak statistike za rezultirajuće vrijednosti. |
javni statički sakupljač summarizingDouble(ToDoubleFunction maper) | Vraća sakupljač koji primjenjuje dvostruku funkciju preslikavanja na svaki ulazni element i vraća sažetak statistike za rezultirajuće vrijednosti. |
Primjer Java kolektora: Dohvaćanje podataka kao popisa
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); } }
Izlaz:
[25000.0, 30000.0, 28000.0, 28000.0, 90000.0]
Primjer Java kolektora: Pretvaranje podataka kao skupa
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); } }
Izlaz:
[25000.0, 30000.0, 28000.0, 90000.0]
Primjer Java kolektora: korištenje metode zbroja
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); } }
Izlaz:
indeks popisa
Sum of prices: 201000.0 Sum of id's: 15
Primjer Java kolekcionara: dobivanje prosječne cijene proizvoda
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); } }
Izlaz:
Average price is: 40200.0
Primjer Java kolekcionara: Brojanje elemenata
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); } }
Izlaz:
Total elements : 5