logo

Колектори на Java

Collectors е последен клас, който разширява класа Object. Той осигурява операции за намаляване, като натрупване на елементи в колекции, обобщаване на елементи според различни критерии и т.н.

Класът Java Collectors предоставя различни методи за работа с елементи

Методи Описание
публичен статичен Collector averagingDouble(ToDoubleFunction картограф) Той връща Collector, който произвежда средноаритметичната стойност на функция с двойна стойност, приложена към входните елементи. Ако няма елементи, резултатът е 0.
public static Collector редуциране (T identity, BinaryOperator op) Той връща Collector, който извършва редукция на своите входни елементи под определен BinaryOperator, използвайки предоставената самоличност.
публичен статичен колекторнамаляване (BinaryOperator op) Той връща Collector, който извършва редукция на своите входни елементи под определен BinaryOperator. Резултатът е описан като опция.
public static Collector редуциране (U identity, Function mapper, BinaryOperator op) Той връща Collector, който извършва редукция на своите входни елементи под определена функция за картографиране и BinaryOperator. Това е обобщение на reducing(Object, BinaryOperator), което позволява трансформация на елементите преди редукция.
публичен статичен колектор> groupingBy(функционален класификатор) Той връща Collector, изпълняващ операция „групиране по“ върху входни елементи от тип T, групиране на елементи според функция за класифициране и връщане на резултатите в карта.
публичен статичен колекторgroupingBy(функционален класификатор, колектор надолу по веригата) Той връща колектор, изпълняващ каскадна операция „групиране по“ върху входни елементи от тип T, групиране на елементи според класификационна функция и след това извършване на редуцираща операция върху стойностите, свързани с даден ключ, като се използва посоченият колектор надолу по веригата.
публична статикаCollector groupingBy(Функционален класификатор, Supplier mapFactory, Collector downstream) Той връща колектор, изпълняващ каскадна операция „групиране по“ върху входни елементи от тип T, групиране на елементи според класификационна функция и след това извършване на редуцираща операция върху стойностите, свързани с даден ключ, като се използва посоченият колектор надолу по веригата. Картата, произведена от Collector, е създадена с предоставената фабрична функция.
публичен статичен колектор> groupingByConcurrent(функционален класификатор) Той връща паралелен колектор, изпълняващ операция „групиране по“ върху входни елементи от тип T, групиране на елементи според функция за класифициране.
публичен статичен колекторgroupingByConcurrent(функционален класификатор, колектор надолу по веригата) Той връща паралелен колектор, изпълняващ каскадна операция „групиране по“ върху входни елементи от тип T, групиране на елементи според функция за класифициране и след това извършване на редуцираща операция върху стойностите, свързани с даден ключ, с помощта на указания колектор надолу по веригата.
публична статикаCollector groupingByConcurrent(Функционален класификатор, Supplier mapFactory, Collector downstream) Той връща паралелен колектор, изпълняващ каскадна операция „групиране по“ върху входни елементи от тип T, групиране на елементи според функция за класифициране и след това извършване на редуцираща операция върху стойностите, свързани с даден ключ, с помощта на указания колектор надолу по веригата. ConcurrentMap, произведен от Collector, се създава с предоставената фабрична функция.
публичен статичен колектор> partitioningBy(предикат предикат) Той връща колектор, който разделя входните елементи според предикат и ги организира в карта . Няма гаранции за типа, променливостта, възможността за сериализиране или безопасността на нишката на върнатата карта.
публичен статичен колекторpartitioningBy(предикат предикат, колектор надолу по веригата) Той връща колектор, който разделя входните елементи според предикат, намалява стойностите във всеки дял според друг колектор и ги организира в карта, чиито стойности са резултат от намаляването надолу по веригата.
публичен статичен колекторtoMap(Функция keyMapper, Функция valueMapper) Той връща колектор, който натрупва елементи в карта, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи.
публичен статичен колекторtoMap (Функция keyMapper, Функция valueMapper, BinaryOperator mergeFunction). Той връща колектор, който натрупва елементи в карта, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи.
публична статикаCollector toMap(Функция keyMapper, Функция valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Той връща колектор, който натрупва елементи в карта, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи.
публичен статичен колекторtoConcurrentMap(Функция keyMapper, Функция valueMapper) Той връща едновременен колектор, който натрупва елементи в ConcurrentMap, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи.
публичен статичен колекторtoConcurrentMap(Функция keyMapper, Функция valueMapper, BinaryOperator mergeFunction) Той връща едновременен колектор, който натрупва елементи в ConcurrentMap, чиито ключове и стойности са резултат от прилагането на предоставените функции за картографиране към входните елементи.
публична статикаCollector toConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Той връща едновременен колектор, който натрупва елементи в 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