logo

Java kolekcionari

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čsmanjenje (BinaryOperator op) 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č> grupiranje prema (klasifikator funkcije) 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čgroupingBy (klasifikator funkcije, kolektor nizvodno) 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čnostGrupiranje kolektora prema (klasifikator funkcije, mapa dobavljačaFactory, kolektor nizvodno) 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č> groupingByConcurrent(Klasifikator funkcije) Vraća istovremeni sakupljač koji implementira operaciju 'grupiraj po' na ulaznim elementima tipa T, grupirajući elemente prema funkciji klasifikacije.
javni statički sakupljačgroupingByConcurrent(funkcijski klasifikator, kolektor nizvodno) 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čnostGrupiranje kolektora po istovremenom (klasifikator funkcije, mapa dobavljačaFactory, kolektor nizvodno) 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č> particioniranjeBy(predikat predikat) Vraća kolektor koji dijeli ulazne elemente prema predikatu i organizira ih u kartu . Ne postoje nikakva jamstva za vrstu, promjenjivost, mogućnost serijalizacije ili sigurnost niza vraćene karte.
javni statički sakupljačpartitioningBy(predikat predikat, kolektor nizvodno) 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čtoMap(Function keyMapper, Function valueMapper) 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čtoMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction). Vraća kolektor koji akumulira elemente u mapu čiji su ključevi i vrijednosti rezultat primjene danih funkcija mapiranja na ulazne elemente.
javna statičnostCollector toMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) 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čtoConcurrentMap(Function keyMapper, Function valueMapper) 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čtoConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction) 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čnostCollector toConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) 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