Collectors е последен клас, който разширява класа Object. Той осигурява операции за намаляване, като натрупване на елементи в колекции, обобщаване на елементи според различни критерии и т.н.
Класът Java Collectors предоставя различни методи за работа с елементи
Методи | Описание |
---|---|
публичен статичен Collector averagingDouble(ToDoubleFunction картограф) | Той връща Collector, който произвежда средноаритметичната стойност на функция с двойна стойност, приложена към входните елементи. Ако няма елементи, резултатът е 0. |
public static Collector редуциране (T identity, BinaryOperator op) | Той връща Collector, който извършва редукция на своите входни елементи под определен BinaryOperator, използвайки предоставената самоличност. |
публичен статичен колектор | Той връща Collector, който извършва редукция на своите входни елементи под определен BinaryOperator. Резултатът е описан като опция. |
public static Collector редуциране (U identity, Function mapper, BinaryOperator op) | Той връща Collector, който извършва редукция на своите входни елементи под определена функция за картографиране и BinaryOperator. Това е обобщение на reducing(Object, BinaryOperator), което позволява трансформация на елементите преди редукция. |
публичен статичен колектор | Той връща Collector, изпълняващ операция „групиране по“ върху входни елементи от тип T, групиране на елементи според функция за класифициране и връщане на резултатите в карта. |
публичен статичен колектор | Той връща колектор, изпълняващ каскадна операция „групиране по“ върху входни елементи от тип T, групиране на елементи според класификационна функция и след това извършване на редуцираща операция върху стойностите, свързани с даден ключ, като се използва посоченият колектор надолу по веригата. |
публична статика | Той връща колектор, изпълняващ каскадна операция „групиране по“ върху входни елементи от тип T, групиране на елементи според класификационна функция и след това извършване на редуцираща операция върху стойностите, свързани с даден ключ, като се използва посоченият колектор надолу по веригата. Картата, произведена от Collector, е създадена с предоставената фабрична функция. |
публичен статичен колектор | Той връща паралелен колектор, изпълняващ операция „групиране по“ върху входни елементи от тип T, групиране на елементи според функция за класифициране. |
публичен статичен колектор | Той връща паралелен колектор, изпълняващ каскадна операция „групиране по“ върху входни елементи от тип T, групиране на елементи според функция за класифициране и след това извършване на редуцираща операция върху стойностите, свързани с даден ключ, с помощта на указания колектор надолу по веригата. |
публична статика | Той връща паралелен колектор, изпълняващ каскадна операция „групиране по“ върху входни елементи от тип T, групиране на елементи според функция за класифициране и след това извършване на редуцираща операция върху стойностите, свързани с даден ключ, с помощта на указания колектор надолу по веригата. ConcurrentMap, произведен от Collector, се създава с предоставената фабрична функция. |
публичен статичен колектор | Той връща колектор, който разделя входните елементи според предикат и ги организира в карта |
публичен статичен колектор | Той връща колектор, който разделя входните елементи според предикат, намалява стойностите във всеки дял според друг колектор и ги организира в карта, чиито стойности са резултат от намаляването надолу по веригата. |
публичен статичен колектор | Той връща колектор, който натрупва елементи в карта, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи. |
публичен статичен колектор | Той връща колектор, който натрупва елементи в карта, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи. |
публична статика | Той връща колектор, който натрупва елементи в карта, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи. |
публичен статичен колектор | Той връща едновременен колектор, който натрупва елементи в ConcurrentMap, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи. |
публичен статичен колектор | Той връща едновременен колектор, който натрупва елементи в ConcurrentMap, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи. |
публична статика | Той връща едновременен колектор, който натрупва елементи в ConcurrentMap, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи. |
публичен статичен колектор summarizingInt(ToIntFunction картограф) | Той връща Collector, който прилага int-продуцираща функция за съпоставяне към всеки входен елемент и връща обобщена статистика за получените стойности. |
публичен статичен колектор summarizingLong(ToLongFunction картограф) | Той връща Collector, който прилага функция за картографиране с дългосрочно производство към всеки входен елемент и връща обобщена статистика за получените стойности. |
публичен статичен колектор summarizingDouble(ToDoubleFunction картограф) | Той връща Collector, който прилага двойно произвеждаща функция за картографиране към всеки входен елемент и връща обобщена статистика за получените стойности. |
Пример за събиране на Java: Извличане на данни като списък
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); } }
Изход:
[25000.0, 30000.0, 28000.0, 28000.0, 90000.0]
Пример за събирачи на Java: Преобразуване на данни като набор
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); } }
Изход:
[25000.0, 30000.0, 28000.0, 90000.0]
Пример за колектори на Java: използване на метод 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); } }
Изход:
Sum of prices: 201000.0 Sum of id's: 15
Пример за колекционери на Java: Получаване на средна цена на продукта
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); } }
Изход:
Average price is: 40200.0
Пример за колекционери на Java: Броене на елементи
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); } }
Изход:
Total elements : 5