Collectors — останній клас, який розширює клас Object. Він забезпечує операції скорочення, такі як накопичення елементів у колекціях, узагальнення елементів за різними критеріями тощо.
Клас Java Collectors надає різні методи роботи з елементами
методи | опис |
---|---|
public static Collector averagingDouble(ToDoubleFunction Mapper) | Він повертає Collector, який створює середнє арифметичне функції з подвійним значенням, застосованої до вхідних елементів. Якщо немає елементів, результат дорівнює 0. |
public static Collector reducing (T identity, BinaryOperator op) | Він повертає Collector, який виконує скорочення своїх вхідних елементів під указаним BinaryOperator, використовуючи надану ідентифікацію. |
публічний статичний збирач | Він повертає Collector, який виконує скорочення своїх вхідних елементів під указаним BinaryOperator. Результат описується як необов’язковий. |
public static Collector reducing (U identity, Function mapper, BinaryOperator op) | Він повертає Collector, який виконує скорочення своїх вхідних елементів під заданою функцією відображення та BinaryOperator. Це узагальнення reducing(Object, BinaryOperator), яке дозволяє трансформувати елементи перед скороченням. |
публічний статичний збирач | Він повертає Collector, який реалізує операцію «групувати за» для вхідних елементів типу T, групуючи елементи відповідно до функції класифікації та повертаючи результати в Map. |
публічний статичний збирач | Він повертає Collector, який реалізує каскадну операцію «group by» для вхідних елементів типу T, групуючи елементи відповідно до функції класифікації, а потім виконуючи операцію скорочення для значень, пов’язаних із заданим ключем, використовуючи вказаний низхідний Collector. |
публічна статика | Він повертає Collector, який реалізує каскадну операцію «group by» для вхідних елементів типу T, групуючи елементи відповідно до функції класифікації, а потім виконуючи операцію скорочення для значень, пов’язаних із заданим ключем, використовуючи вказаний низхідний Collector. Карту, створену Collector, створено за допомогою наданої заводської функції. |
публічний статичний збирач | Він повертає паралельний Collector, який реалізує операцію «групувати за» для вхідних елементів типу T, групуючи елементи відповідно до функції класифікації. |
публічний статичний збирач | Він повертає паралельний Collector, який реалізує каскадну операцію «group by» на вхідних елементах типу T, групуючи елементи відповідно до функції класифікації, а потім виконуючи операцію скорочення для значень, пов’язаних із заданим ключем, використовуючи вказаний низхідний Collector. |
публічна статика | Він повертає паралельний Collector, який реалізує каскадну операцію «group by» на вхідних елементах типу T, групуючи елементи відповідно до функції класифікації, а потім виконуючи операцію скорочення для значень, пов’язаних із заданим ключем, використовуючи вказаний низхідний Collector. ConcurrentMap, створений Collector, створюється за допомогою наданої заводської функції. |
публічний статичний збирач | Він повертає Collector, який розбиває вхідні елементи відповідно до предикату та організовує їх у карту. |
публічний статичний збирач | Він повертає Collector, який розбиває вхідні елементи відповідно до предикату, зменшує значення в кожному розділі відповідно до іншого Collector і організовує їх у карту, значення якої є результатом низхідного скорочення. |
публічний статичний збирач | Він повертає Collector, який накопичує елементи в Map, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів. |
публічний статичний збирач | Він повертає Collector, який накопичує елементи в Map, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів. |
публічна статика | Він повертає Collector, який накопичує елементи в Map, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів. |
публічний статичний збирач | Він повертає паралельний Collector, який накопичує елементи в ConcurrentMap, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів. |
публічний статичний збирач | Він повертає паралельний Collector, який накопичує елементи в ConcurrentMap, ключі та значення якого є результатом застосування наданих функцій відображення до вхідних елементів. |
публічна статика | Він повертає паралельний 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