logo

Колекціонери Java

Collectors — останній клас, який розширює клас Object. Він забезпечує операції скорочення, такі як накопичення елементів у колекціях, узагальнення елементів за різними критеріями тощо.

Клас Java Collectors надає різні методи роботи з елементами

методи опис
public static Collector averagingDouble(ToDoubleFunction Mapper) Він повертає Collector, який створює середнє арифметичне функції з подвійним значенням, застосованої до вхідних елементів. Якщо немає елементів, результат дорівнює 0.
public static Collector reducing (T identity, BinaryOperator op) Він повертає Collector, який виконує скорочення своїх вхідних елементів під указаним BinaryOperator, використовуючи надану ідентифікацію.
публічний статичний збирачзменшення (BinaryOperator op) Він повертає Collector, який виконує скорочення своїх вхідних елементів під указаним BinaryOperator. Результат описується як необов’язковий.
public static Collector reducing (U identity, Function mapper, BinaryOperator op) Він повертає Collector, який виконує скорочення своїх вхідних елементів під заданою функцією відображення та BinaryOperator. Це узагальнення reducing(Object, BinaryOperator), яке дозволяє трансформувати елементи перед скороченням.
публічний статичний збирач> groupingBy (класифікатор функцій) Він повертає Collector, який реалізує операцію «групувати за» для вхідних елементів типу T, групуючи елементи відповідно до функції класифікації та повертаючи результати в Map.
публічний статичний збирачgroupingBy(функційний класифікатор, Collector downstream) Він повертає Collector, який реалізує каскадну операцію «group by» для вхідних елементів типу T, групуючи елементи відповідно до функції класифікації, а потім виконуючи операцію скорочення для значень, пов’язаних із заданим ключем, використовуючи вказаний низхідний Collector.
публічна статикаCollector groupingBy(Function classifier, Supplier mapFactory, Collector downstream) Він повертає Collector, який реалізує каскадну операцію «group by» для вхідних елементів типу T, групуючи елементи відповідно до функції класифікації, а потім виконуючи операцію скорочення для значень, пов’язаних із заданим ключем, використовуючи вказаний низхідний Collector. Карту, створену Collector, створено за допомогою наданої заводської функції.
публічний статичний збирач> groupingByConcurrent(Класифікатор функцій) Він повертає паралельний Collector, який реалізує операцію «групувати за» для вхідних елементів типу T, групуючи елементи відповідно до функції класифікації.
публічний статичний збирачgroupingByConcurrent(класифікатор функцій, колектор нижче) Він повертає паралельний Collector, який реалізує каскадну операцію «group by» на вхідних елементах типу T, групуючи елементи відповідно до функції класифікації, а потім виконуючи операцію скорочення для значень, пов’язаних із заданим ключем, використовуючи вказаний низхідний Collector.
публічна статикаCollector groupingByConcurrent(функційний класифікатор, Supplier mapFactory, Collector downstream) Він повертає паралельний Collector, який реалізує каскадну операцію «group by» на вхідних елементах типу T, групуючи елементи відповідно до функції класифікації, а потім виконуючи операцію скорочення для значень, пов’язаних із заданим ключем, використовуючи вказаний низхідний Collector. ConcurrentMap, створений Collector, створюється за допомогою наданої заводської функції.
публічний статичний збирач> partitioningBy(Предикатний предикат) Він повертає Collector, який розбиває вхідні елементи відповідно до предикату та організовує їх у карту. . Немає жодних гарантій щодо типу, мінливості, серіалізації чи потокової безпеки повернутої карти.
публічний статичний збирачpartitioningBy(предикатний предикат, збирач нижче) Він повертає Collector, який розбиває вхідні елементи відповідно до предикату, зменшує значення в кожному розділі відповідно до іншого Collector і організовує їх у карту, значення якої є результатом низхідного скорочення.
публічний статичний збирачtoMap(функція keyMapper, функція valueMapper) Він повертає Collector, який накопичує елементи в Map, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів.
публічний статичний збирачtoMap ( Функція keyMapper , Функція valueMapper , BinaryOperator mergeFunction ) . Він повертає Collector, який накопичує елементи в Map, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів.
публічна статикаCollector toMap(функція keyMapper, функція valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Він повертає Collector, який накопичує елементи в Map, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів.
публічний статичний збирачtoConcurrentMap(функція keyMapper, функція valueMapper) Він повертає паралельний Collector, який накопичує елементи в ConcurrentMap, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів.
публічний статичний збирачtoConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction) Він повертає паралельний Collector, який накопичує елементи в ConcurrentMap, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів.
публічна статикаCollector toConcurrentMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier) Він повертає паралельний Collector, який накопичує елементи в ConcurrentMap, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів.
public static Collector summarizingInt(ToIntFunction Mapper) Він повертає Collector, який застосовує функцію зіставлення int-producing до кожного вхідного елемента та повертає підсумкову статистику для результуючих значень.
public static Collector summarizingLong(ToLongFunction Mapper) Він повертає Collector, який застосовує довготривалу функцію відображення до кожного вхідного елемента та повертає підсумкову статистику для отриманих значень.
public static Collector summarizingDouble(ToDoubleFunction Mapper) Він повертає 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