logo

Colectorii Java

Collectors este o clasă finală care extinde clasa Object. Oferă operațiuni de reducere, cum ar fi acumularea elementelor în colecții, rezumarea elementelor după diverse criterii etc.

Clasa Java Collectors oferă diverse metode de a face față elementelor

ce este modulo în c++
Metode Descriere
Media statică publică a colectorului Double (ToDoubleFunction mapper) Returnează un colector care produce media aritmetică a unei funcții cu două valori aplicate elementelor de intrare. Dacă nu sunt prezente elemente, rezultatul este 0.
Reducerea colectorului static public (identitate T, operațiune BinaryOperator) Returnează un colector care efectuează o reducere a elementelor sale de intrare sub un Operator Binar specificat folosind identitatea furnizată.
colector public staticreducerea(BinaryOperator op) Returnează un Colector care efectuează o reducere a elementelor sale de intrare sub un Operator Binar specificat. Rezultatul este descris ca opțional.
Reducerea colectorului static public (identitate U, mapator de funcții, operațiune BinaryOperator) Returnează un colector care efectuează o reducere a elementelor sale de intrare sub o funcție de mapare specificată și BinaryOperator. Aceasta este o generalizare a reducerii (Object, BinaryOperator) care permite o transformare a elementelor înainte de reducere.
colector public static> groupingBy(Clasificator de funcții) Returnează un Colector care implementează o operație „grupare după” pe elementele de intrare de tip T, grupând elemente în funcție de o funcție de clasificare și returnând rezultatele într-o Hartă.
colector public staticgroupingBy(Clasificator de funcții, Colector în aval) Returnează un colector care implementează o operație „grupare după” în cascadă pe elementele de intrare de tip T, grupând elemente în funcție de o funcție de clasificare și apoi efectuând o operație de reducere a valorilor asociate cu o anumită cheie utilizând colectorul din aval specificat.
static publicGrupare colectorBy(Clasificator de funcții, Harta furnizorului Fabrică, Colector în aval) Returnează un colector care implementează o operație „grupare după” în cascadă pe elementele de intrare de tip T, grupând elemente în funcție de o funcție de clasificare și apoi efectuând o operație de reducere a valorilor asociate cu o anumită cheie utilizând colectorul din aval specificat. Harta produsă de Colector este creată cu funcția furnizată din fabrică.
colector public static> groupingByConcurrent(Clasificator de funcții) Returnează un colector concurent care implementează o operație „grupare după” pe elementele de intrare de tip T, grupând elementele conform unei funcții de clasificare.
colector public staticgroupingByConcurrent(Clasificator de funcții, Colector în aval) Returnează un colector concurent care implementează o operație „grupare după” în cascadă pe elementele de intrare de tip T, grupând elemente în funcție de o funcție de clasificare și apoi efectuând o operațiune de reducere a valorilor asociate cu o anumită cheie utilizând colectorul din aval specificat.
static publicGrupare colectorByConcurrent(Clasificator de funcții, Harta furnizorului Fabrică, Colector în aval) Returnează un colector concurent care implementează o operație „grupare după” în cascadă pe elementele de intrare de tip T, grupând elemente în funcție de o funcție de clasificare și apoi efectuând o operațiune de reducere a valorilor asociate cu o anumită cheie utilizând colectorul din aval specificat. ConcurrentMap produs de colector este creat cu funcția furnizată din fabrică.
colector public static> partitioningBy(predicat predicat) Returnează un colector care partiţionează elementele de intrare în funcţie de un predicat şi le organizează într-o hartă . Nu există garanții privind tipul, mutabilitatea, serializabilitatea sau siguranța firelor de execuție a Hărții returnate.
colector public staticpartitioningBy(predicat predicat, colector în aval) Returnează un colector care partiţionează elementele de intrare în funcţie de un predicat, reduce valorile din fiecare partiţie în funcţie de un alt colector şi le organizează într-o hartă ale cărei valori sunt rezultatul reducerii din aval.
colector public statictoMap(Function keyMapper, Function valueMapper) Returnează un colector care acumulează elemente într-o hartă ale cărei chei și valori sunt rezultatul aplicării funcțiilor de mapare furnizate la elementele de intrare.
colector public statictoMap ( Function keyMapper , Function valueMapper , BinaryOperator mergeFunction ) . Returnează un colector care acumulează elemente într-o hartă ale cărei chei și valori sunt rezultatul aplicării funcțiilor de mapare furnizate la elementele de intrare.
static publicCollector toMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier map Supplier) Returnează un colector care acumulează elemente într-o hartă ale cărei chei și valori sunt rezultatul aplicării funcțiilor de mapare furnizate la elementele de intrare.
colector public statictoConcurrentMap(Function keyMapper, Function valueMapper) Returnează un colector concurent care acumulează elemente într-un ConcurrentMap ale cărui chei și valori sunt rezultatul aplicării funcțiilor de mapare furnizate la elementele de intrare.
colector public statictoConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction) Returnează un colector concurent care acumulează elemente într-un ConcurrentMap ale cărui chei și valori sunt rezultatul aplicării funcțiilor de mapare furnizate la elementele de intrare.
static publicColector laConcurrentMap (Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier map Supplier) Returnează un colector concurent care acumulează elemente într-un ConcurrentMap ale cărui chei și valori sunt rezultatul aplicării funcțiilor de mapare furnizate la elementele de intrare.
colector public static summarizingInt(ToIntFunction mapper) Returnează un colector care aplică o funcție de mapare care produce int fiecărui element de intrare și returnează statistici rezumative pentru valorile rezultate.
colector public static summarizingLong(ToLongFunction mapper) Returnează un colector care aplică o funcție de mapare de lungă durată fiecărui element de intrare și returnează statistici rezumative pentru valorile rezultate.
public static Collector summarizingDouble(ToDoubleFunction mapper) Returnează un colector care aplică o funcție de mapare cu producție dublă fiecărui element de intrare și returnează statistici rezumative pentru valorile rezultate.

Exemplu de colectori Java: Preluarea datelor ca o listă

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

Ieșire:

 [25000.0, 30000.0, 28000.0, 28000.0, 90000.0] 

Exemplu de colectori Java: conversia datelor ca set

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

Ieșire:

 [25000.0, 30000.0, 28000.0, 90000.0] 

Exemplu de colectori Java: folosind metoda sum

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

Ieșire:

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

Exemplu de colectori Java: obținerea prețului mediu al produsului

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

Ieșire:

indicator în c
 Average price is: 40200.0 

Exemplu de colectori Java: Numărarea elementelor

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

Ieșire:

 Total elements : 5