Класс Collectors
public final class Collectors extends Object
Collector, которые реализуют различные полезные операции редукции, такие как накопление элементов в коллекции, обобщение элементов по различным критериям и т. д. Ниже приведены примеры использования предопределенных коллекторов для выполнения общих задач мутабельной редукции:
// Accumulate names into a List
List<String> list = people.stream()
.map(Person::getName)
.collect(Collectors.toList());
// Accumulate names into a TreeSet
Set<String> set = people.stream()
.map(Person::getName)
.collect(Collectors.toCollection(TreeSet::new));
// Convert elements to strings and concatenate them, separated by commas
String joined = things.stream()
.map(Object::toString)
.collect(Collectors.joining(", "));
// Compute sum of salaries of employee
int total = employees.stream()
.collect(Collectors.summingInt(Employee::getSalary));
// Group employees by department
Map<Department, List<Employee>> byDept = employees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment));
// Compute sum of salaries by department
Map<Department, Integer> totalByDept = employees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment,
Collectors.summingInt(Employee::getSalary)));
// Partition students into passing and failing
Map<Boolean, List<Student>> passingFailing = students.stream()
.collect(Collectors.partitioningBy(s -> s.getGrade() >= PASS_THRESHOLD));
- Since:
- 1.8
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static <T> Collector |
averagingDouble |
Возвращает Collector, который вычисляет среднее арифметическое значения функции от двойного типа, применённой к входным элементам. |
static <T> Collector |
averagingInt |
Возвращает Collector, который вычисляет среднее арифметическое значения функции от целого типа, применённой к входным элементам. |
static <T> Collector |
averagingLong |
Возвращает Collector, который вычисляет среднее арифметическое значения функции от длинного целого типа, применённой к входным элементам. |
static <T, |
collectingAndThen |
Адаптирует Collector для выполнения дополнительной завершающей трансформации. |
static <T> Collector |
counting() |
Возвращает Collector, принимающий элементы типа T, который подсчитывает количество входных элементов. |
static <T, |
filtering |
Адаптирует Collector к приёму элементов того же типа T, применяя предикат к каждому входному элементу и накапливая только если предикат возвращает true. |
static <T, |
flatMapping |
Адаптирует Collector, принимающий элементы типа U к приёму элементов типа T, применяя функцию плоского отображения к каждому входному элементу перед накоплением. |
static <T, |
groupingBy |
Возвращает Collector, реализующий операцию «группировка по» над входными элементами типа T, группируя элементы согласно функции классификации и возвращая результаты в Map. |
static <T, |
groupingBy |
Возвращает Collector, реализующий каскадную операцию «группировка по» над входными элементами типа T, группируя элементы согласно функции классификации, а затем выполняя операцию сокращения значений, связанных с данным ключом, используя указанную последующую Collector. |
static <T, |
groupingBy |
Возвращает Collector, реализующий каскадную операцию «группировка по» над входными элементами типа T, группируя элементы согласно функции классификации, а затем выполняя операцию сокращения значений, связанных с данным ключом, используя указанную последующую Collector. |
static <T, |
groupingByConcurrent |
Возвращает конкуретную Collector, реализующую операцию «группировка по» над входными элементами типа T, группируя элементы согласно функции классификации. |
static <T, |
groupingByConcurrent |
Возвращает конкуретную Collector, реализующую каскадную операцию «группировка по» над входными элементами типа T, группируя элементы согласно функции классификации, а затем выполняя операцию сокращения значений, связанных с данным ключом, используя указанную последующую Collector. |
static <T, |
groupingByConcurrent |
Возвращает конкуретную Collector, реализующую каскадную операцию «группировка по» над входными элементами типа T, группируя элементы согласно функции классификации, а затем выполняя операцию сокращения значений, связанных с данным ключом, используя указанную последующую Collector. |
static Collector |
joining() |
Возвращает Collector, который конкатенирует входные элементы в String в порядке встречи. |
static Collector |
joining |
Возвращает Collector, который конкатенирует входные элементы, разделённые указанным разделителем, в порядке встречи. |
static Collector |
joining |
Возвращает Collector, который конкатенирует входные элементы, разделённые указанным разделителем, с указанным префиксом и суффиксом, в порядке встречи. |
static <T, |
mapping |
Адаптирует Collector, принимающий элементы типа U, к приёму элементов типа T, применяя функцию отображения к каждому входному элементу перед накоплением. |
static <T> Collector |
maxBy |
Возвращает Collector, который производит максимальный элемент согласно заданной Comparator, описанной как Optional<T>. |
static <T> Collector |
minBy |
Возвращает Collector, который производит минимальный элемент согласно заданной Comparator, описанной как Optional<T>. |
static <T> Collector |
partitioningBy |
Возвращает Collector, который разделяет входные элементы по Predicate и организует их в Map<Boolean, List<T>>. |
static <T, |
partitioningBy |
Возвращает Collector, который разделяет входные элементы по Predicate, уменьшает значения в каждой группе согласно другой Collector и организует их в Map<Boolean, D>, значения которого являются результатом последующего сокращения. |
static <T> Collector |
reducing |
Возвращает Collector, который выполняет сокращение входных элементов согласно указанному BinaryOperator. |
static <T> Collector |
reducing |
Возвращает Collector, который выполняет сокращение входных элементов согласно указанному BinaryOperator, используя предоставленную идентичность. |
static <T, |
reducing |
Возвращает Collector, который выполняет сокращение входных элементов согласно указанной функции отображения и BinaryOperator. |
static <T> Collector |
summarizingDouble |
Возвращает Collector, который применяет функцию отображения, производящую double к каждому входному элементу и возвращает сводные статистические данные для полученных значений. |
static <T> Collector |
summarizingInt |
Возвращает Collector, который применяет функцию отображения, производящую int к каждому входному элементу и возвращает сводные статистические данные для полученных значений. |
static <T> Collector |
summarizingLong |
Возвращает Collector, который применяет функцию отображения, производящую long к каждому входному элементу и возвращает сводные статистические данные для полученных значений. |
static <T> Collector |
summingDouble |
Возвращает Collector, который производит сумму значения функции от двойного типа, применённой к входным элементам. |
static <T> Collector |
summingInt |
Возвращает Collector, который производит сумму значения функции от целого типа, применённой к входным элементам. |
static <T> Collector |
summingLong |
Возвращает Collector, который производит сумму значения функции от длинного целого типа, применённой к входным элементам. |
static <T, |
teeing |
Возвращает Collector, который представляет собой композицию двух последующих коллекторов. |
static <T, |
toCollection |
Возвращает Collector, который накапливает входные элементы в новый Collection в порядке встречи. |
static <T, |
toConcurrentMap |
Возвращает конкуретную Collector, которая накапливает элементы в ConcurrentMap, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. |
static <T, |
toConcurrentMap |
Возвращает конкуретную Collector, которая накапливает элементы в ConcurrentMap, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. |
static <T, |
toConcurrentMap |
Возвращает конкуретную Collector, которая накапливает элементы в ConcurrentMap, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. |
static <T> Collector |
toList() |
Возвращает Collector, который накапливает входные элементы в новый List. |
static <T, |
toMap |
Возвращает Collector, который накапливает элементы в Map, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. |
static <T, |
toMap |
Возвращает Collector, который накапливает элементы в Map, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. |
static <T, |
toMap |
Возвращает Collector, который накапливает элементы в Map, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. |
static <T> Collector |
toSet() |
Возвращает Collector, который накапливает входные элементы в новый Set. |
static <T> Collector |
toUnmodifiableList() |
Возвращает Collector, который накапливает входные элементы в неизменяемый список List в порядке их появления. |
static <T, |
toUnmodifiableMap |
Возвращает Collector, который накапливает входные элементы в неизменяемый словарь Map, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. |
static <T, |
toUnmodifiableMap |
Возвращает Collector, который накапливает входные элементы в неизменяемый словарь Map, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. |
static <T> Collector |
toUnmodifiableSet() |
Возвращает Collector, который накапливает входные элементы в неизменяемый набор Set. |
Подробное описание методов
toCollection
public static <T, C extends Collection<T>> Collector<T,?,C> toCollection(Supplier<C> collectionFactory)
Collector, который накапливает входные элементы в новую Collection в порядке их появления. Collection создаётся предоставленным фабричным методом.- Параметры типа:
-
T- тип входных элементов -
C- тип результирующейCollection - Параметры:
-
collectionFactory- поставщик, предоставляющий новую пустуюCollection, в которую будут вставлены результаты - Возвращаемое значение:
Collector, который собирает все входные элементы вCollectionв порядке их появления
toList
public static <T> Collector<T,?,List<T>> toList()
Collector, который накапливает входные элементы в новый List. Нет гарантий по типу, изменяемости, сериализуемости или потокобезопасности возвращаемого List; если требуется больший контроль над возвращаемым List, используйте toCollection(Supplier).- Параметры типа:
-
T- тип входных элементов - Возвращаемое значение:
Collector, который собирает все входные элементы вListв порядке их появления
toUnmodifiableList
public static <T> Collector<T,?,List<T>> toUnmodifiableList()
Collector, который накапливает входные элементы в неизменяемый список List в порядке их появления. Возвращаемый коллектор не допускает null-значений и будет выбрасывать NullPointerException, если встретится null-значение.- Параметры типа:
-
T- тип входных элементов - Возвращаемое значение:
Collector, который накапливает входные элементы в неизменяемый список List в порядке их появления- С:
- 10
toSet
public static <T> Collector<T,?,Set<T>> toSet()
Collector, который накапливает входные элементы в новый Set. Нет гарантий по типу, изменяемости, сериализуемости или потокобезопасности возвращаемого Set; если требуется больший контроль над возвращаемым Set, используйте toCollection(Supplier). Это unordered коллектор.
- Параметры типа:
-
T- тип входных элементов - Возвращаемое значение:
Collector, который собирает все входные элементы вSet
toUnmodifiableSet
public static <T> Collector<T,?,Set<T>> toUnmodifiableSet()
Collector, который накапливает входные элементы в неизменяемый набор Set. Возвращаемый коллектор не допускает null-значений и будет выбрасывать NullPointerException, если встретится null-значение. Если вход содержит дубликаты, сохраняется произвольный элемент из дубликатов. Это unordered коллектор.
- Параметры типа:
-
T- тип входных элементов - Возвращаемое значение:
Collector, который накапливает входные элементы в неизменяемый набор Set- С:
- 10
joining
public static Collector<CharSequence,?,String> joining()
Collector, который конкатенирует входные элементы в строку в порядке их появления.- Возвращаемое значение:
Collector, который конкатенирует входные элементы в строку в порядке их появления
joining
public static Collector<CharSequence,?,String> joining(CharSequence delimiter)
Collector, который конкатенирует входные элементы, разделенные указанным разделителем, в порядке их появления.- Параметры:
-
delimiter- разделитель, используемый между элементами - Возвращаемое значение:
Collector, который конкатенирует элементы CharSequence, разделенные указанным разделителем, в порядке их появления
joining
public static Collector<CharSequence,?,String> joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
Collector, который конкатенирует входные элементы, разделенные указанным разделителем, с указанным префиксом и суффиксом, в порядке их появления.- Параметры:
-
delimiter- разделитель, используемый между элементами -
prefix- последовательность символов, используемая в начале объединённого результата -
suffix- последовательность символов, используемая в конце объединённого результата - Возвращаемое значение:
Collector, который конкатенирует элементы CharSequence, разделенные указанным разделителем, в порядке их появления
mapping
public static <T, U, A, R> Collector<T,?,R> mapping(Function<? super T,? extends U> mapper, Collector<? super U,A,R> downstream)
Collector, принимающий элементы типа U, на тот, который принимает элементы типа T, применяя функцию отображения к каждому входному элементу перед накоплением.- Примечание API:
mapping()коллекторы наиболее полезны при использовании в многоуровневом сокращении, например, послеgroupingByилиpartitioningBy. Например, имея потокPerson, чтобы накопить множество фамилий в каждом городе:Map<City, Set<String>> lastNamesByCity = people.stream().collect( groupingBy(Person::getCity, mapping(Person::getLastName, toSet())));- Параметры типа:
-
T- тип входных элементов -
U- тип элементов, принимаемых коллектором вниз по потоку -
A- промежуточный тип накопления коллектора вниз по потоку -
R- тип результата коллектора - Параметры:
-
mapper- функция, применяемая к входным элементам -
downstream- коллектор, который будет принимать отображённые значения - Возвращаемое значение:
- коллектор, который применяет функцию отображения к входным элементам и предоставляет отображённые результаты коллектору вниз по потоку
flatMapping
public static <T, U, A, R> Collector<T,?,R> flatMapping(Function<? super T,? extends Stream<? extends U>> mapper, Collector<? super U,A,R> downstream)
Collector, принимающий элементы типа U, на тот, который принимает элементы типа T, применяя плоскую функцию отображения к каждому входному элементу перед накоплением. Функция плоского отображения отображает входной элемент в stream, охватывающий ноль или более выходных элементов, которые затем накапливаются вниз по потоку. Каждый преобразованный поток closed после того, как его содержимое было помещено вниз по потоку. (Если преобразованный поток null, используется пустой поток.)- Примечание API:
flatMapping()коллекторы наиболее полезны при использовании в многоуровневом сокращении, например, послеgroupingByилиpartitioningBy. Например, имея потокOrder, чтобы накопить множество позиций для каждого клиента:Map<String, Set<LineItem>> itemsByCustomerName = orders.stream().collect( groupingBy(Order::getCustomerName, flatMapping(order -> order.getLineItems().stream(), toSet())));- Параметры типа:
-
T- тип входных элементов -
U- тип элементов, принимаемых коллектором вниз по потоку -
A- промежуточный тип накопления коллектора вниз по потоку -
R- тип результата коллектора - Параметры:
-
mapper- функция, применяемая к входным элементам, которая возвращает поток результатов -
downstream- коллектор, который получит элементы потока, возвращенного отображающей функцией - Возвращаемое значение:
- коллектор, который применяет функцию отображения к входным элементам и предоставляет плоские отображенные результаты коллектору вниз по потоку
- С:
- 9
filtering
public static <T, A, R> Collector<T,?,R> filtering(Predicate<? super T> predicate, Collector<? super T,A,R> downstream)
Collector на тот, который принимает элементы того же типа T, применяя предикат к каждому входному элементу и накапливая только если предикат возвращает true.- Примечание API:
filtering()коллекторы наиболее полезны при использовании в многоуровневом сокращении, например, послеgroupingByилиpartitioningBy. Например, имея потокEmployee, чтобы накопить сотрудников в каждом отделе, у которых зарплата выше определённого порога:
Фильтрующий коллектор отличается от операцииMap<Department, Set<Employee>> wellPaidEmployeesByDepartment = employees.stream().collect( groupingBy(Employee::getDepartment, filtering(e -> e.getSalary() > 2000, toSet())));filter()потока. В этом примере, предположим, что в отделе нет сотрудников, чья зарплата превышает порог. Использование фильтрующего коллектора, как показано выше, приведёт к отображению этого отдела в пустойSet. Если была выполнена операция потокаfilter(), то отображения для этого отдела вообще не будет.- Параметры типа:
-
T- тип входных элементов -
A- промежуточный тип накопления коллектора вниз по потоку -
R- тип результата коллектора - Параметры:
-
predicate- предикат, применяемый к входным элементам -
downstream- коллектор, который будет принимать значения, соответствующие предикату - Возвращаемое значение:
- коллектор, который применяет предикат к входным элементам и предоставляет соответствующие элементы коллектору вниз по потоку
- С:
- 9
collectingAndThen
public static <T, A, R, RR> Collector<T,A,RR> collectingAndThen(Collector<T,A,R> downstream, Function<R,RR> finisher)
Collector для выполнения дополнительной завершающей трансформации. Например, можно адаптировать коллектор toList() для всегда создания неизменяемого списка с помощью:
List<String> list = people.stream().collect(
collectingAndThen(toList(),
Collections::unmodifiableList));
- Параметры типа:
-
T- тип входных элементов -
A- промежуточный тип накопления для коллектора-преемника -
R- тип результата для коллектора-преемника -
RR- тип результата для результирующего коллектора - Параметры:
-
downstream- коллектор -
finisher- функция, применяемая к конечному результату коллектора-преемника - Возвращает:
- коллектор, который выполняет действие коллектора-преемника, за которым следует дополнительный завершающий шаг
counting
public static <T> Collector<T,?,Long> counting()
Collector, принимающий элементы типа T, который подсчитывает количество входных элементов. Если элементов нет, результат — 0.- Требования к реализации:
- Это даёт результат, эквивалентный:
reducing(0L, e -> 1L, Long::sum) - Параметры типа:
-
T- тип входных элементов - Возвращает:
Collector, подсчитывающий входные элементы
minBy
public static <T> Collector<T,?,Optional<T>> minBy(Comparator<? super T> comparator)
Collector, который производит минимальный элемент в соответствии с заданным Comparator, описываемым как Optional<T>.- Требования к реализации:
- Это даёт результат, эквивалентный:
reducing(BinaryOperator.minBy(comparator)) - Параметры типа:
-
T- тип входных элементов - Параметры:
-
comparator-Comparatorдля сравнения элементов - Возвращает:
Collector, который производит минимальное значение
maxBy
public static <T> Collector<T,?,Optional<T>> maxBy(Comparator<? super T> comparator)
Collector, который производит максимальный элемент в соответствии с заданным Comparator, описываемым как Optional<T>.- Требования к реализации:
- Это даёт результат, эквивалентный:
reducing(BinaryOperator.maxBy(comparator)) - Параметры типа:
-
T- тип входных элементов - Параметры:
-
comparator-Comparatorдля сравнения элементов - Возвращает:
Collector, который производит максимальное значение
summingInt
public static <T> Collector<T,?,Integer> summingInt(ToIntFunction<? super T> mapper)
Collector, который производит сумму целочисленной функции, применённой к входным элементам. Если элементов нет, результат — 0.- Параметры типа:
-
T- тип входных элементов - Параметры:
-
mapper- функция для извлечения свойства, которое будет суммироваться - Возвращает:
Collector, который производит сумму производного свойства
summingLong
public static <T> Collector<T,?,Long> summingLong(ToLongFunction<? super T> mapper)
Collector, который производит сумму длинного целочисленного значения, применённого к входным элементам. Если элементов нет, результат — 0.- Параметры типа:
-
T- тип входных элементов - Параметры:
-
mapper- функция для извлечения свойства, которое будет суммироваться - Возвращает:
Collector, который производит сумму производного свойства
summingDouble
public static <T> Collector<T,?,Double> summingDouble(ToDoubleFunction<? super T> mapper)
Collector, который производит сумму функции с двойной точностью, применённой к входным элементам. Если элементов нет, результат — 0. Возвращаемая сумма может изменяться в зависимости от порядка записи значений из-за накопленной погрешности округления при сложении значений с разными масштабами. Значения, отсортированные по возрастанию абсолютного значения, как правило, дают более точные результаты. Если какое-либо записанное значение является NaN или сумма в какой-то момент является NaN, то сумма будет NaN.
- Параметры типа:
-
T- тип входных элементов - Параметры:
-
mapper- функция для извлечения свойства, которое будет суммироваться - Возвращает:
Collector, который производит сумму производного свойства
averagingInt
public static <T> Collector<T,?,Double> averagingInt(ToIntFunction<? super T> mapper)
Collector, который производит среднее арифметическое целочисленной функции, применённой к входным элементам. Если элементов нет, результат — 0.- Параметры типа:
-
T- тип входных элементов - Параметры:
-
mapper- функция для извлечения свойства, которое будет усредняться - Возвращает:
Collector, который производит среднее арифметическое производного свойства
averagingLong
public static <T> Collector<T,?,Double> averagingLong(ToLongFunction<? super T> mapper)
Collector, который производит среднее арифметическое длинного целочисленного значения, применённого к входным элементам. Если элементов нет, результат — 0.- Параметры типа:
-
T- тип входных элементов - Параметры:
-
mapper- функция для извлечения свойства, которое будет усредняться - Возвращает:
Collector, который производит среднее арифметическое производного свойства
averagingDouble
public static <T> Collector<T,?,Double> averagingDouble(ToDoubleFunction<? super T> mapper)
Collector, который производит среднее арифметическое функции с двойной точностью, применённой к входным элементам. Если элементов нет, результат — 0. Возвращаемое среднее может изменяться в зависимости от порядка записи значений из-за накопленной погрешности округления при сложении значений с разными масштабами. Значения, отсортированные по возрастанию абсолютного значения, как правило, дают более точные результаты. Если какое-либо записанное значение является NaN или сумма в какой-то момент является NaN, то среднее значение будет NaN.
- Примечание по реализации:
- Формат
doubleможет представлять все последовательные целые числа в диапазоне от -253 до 253. Если в потоке более 253 значений, делитель в вычислении среднего значения насыщается на 253, что приводит к дополнительным численным ошибкам. - Параметры типа:
-
T- тип входных элементов - Параметры:
-
mapper- функция для извлечения свойства, которое будет усредняться - Возвращает:
Collector, который производит среднее арифметическое производного свойства
reducing
public static <T> Collector<T,?,T> reducing(T identity, BinaryOperator<T> op)
Collector, который выполняет редукцию входных элементов в соответствии с заданным BinaryOperator с использованием предоставленного идентификатора.- Примечание API:
- Коллекторы
reducing()наиболее полезны при использовании в многоуровневой редукции, послеgroupingByилиpartitioningBy. Для выполнения простой редукции на потоке используйтеStream.reduce(Object, BinaryOperator)}. - Параметры типа:
-
T- тип элемента для входных и выходных данных редукции - Параметры:
-
identity- идентификационное значение для редукции (также значение, возвращаемое при отсутствии входных элементов) -
op-BinaryOperator<T>, используемая для редукции входных элементов - Возвращает:
Collector, который реализует операцию редукции- См. также:
reducing
public static <T> Collector<T,?,Optional<T>> reducing(BinaryOperator<T> op)
Collector, который выполняет редукцию входных элементов в соответствии с заданным BinaryOperator. Результат описывается как Optional<T>.- Примечание API:
- Коллекторы
reducing()наиболее полезны при использовании в многоуровневой редукции, послеgroupingByилиpartitioningBy. Для выполнения простой редукции на потоке используйтеStream.reduce(BinaryOperator)вместо этого.Например, для потока
Person, чтобы вычислить самого высокого человека в каждом городе:Comparator<Person> byHeight = Comparator.comparing(Person::getHeight); Map<City, Optional<Person>> tallestByCity = people.stream().collect( groupingBy(Person::getCity, reducing(BinaryOperator.maxBy(byHeight)))); - Параметры типа:
-
T- тип элемента для входных и выходных данных редукции - Параметры:
-
op-BinaryOperator<T>для редукции входных элементов - Возвращает:
Collector, который реализует операцию редукции- См. также:
reducing
public static <T, U> Collector<T,?,U> reducing(U identity, Function<? super T,? extends U> mapper, BinaryOperator<U> op)
Collector, выполняющий редукцию входных элементов по заданной функции отображения и BinaryOperator. Это обобщение reducing(Object, BinaryOperator), позволяющее преобразовать элементы перед редукцией.- API Note:
- Коллекторы
reducing()наиболее полезны при использовании в многоуровневой редукции, послеgroupingByилиpartitioningBy. Для выполнения простого map-reduce над потоком используйтеStream.map(Function)иStream.reduce(Object, BinaryOperator)вместо этого.Например, для потока
Person, чтобы вычислить самую длинную фамилию жителя в каждом городе:Comparator<String> byLength = Comparator.comparing(String::length); Map<City, String> longestLastNameByCity = people.stream().collect( groupingBy(Person::getCity, reducing("", Person::getLastName, BinaryOperator.maxBy(byLength)))); - Параметры типа:
-
T- тип входных элементов -
U- тип отображённых значений - Параметры:
-
identity- значение по умолчанию для редукции (также значение, возвращаемое при отсутствии входных элементов) -
mapper- функция отображения, применяемая к каждому входному значению -
op-BinaryOperator<U>для редукции отображённых значений - Возвращает:
Collector, реализующий операцию map-reduce- См. также:
groupingBy
public static <T, K> Collector<T,?,Map<K,List<T>>> groupingBy(Function<? super T,? extends K> classifier)
Collector, реализующий операцию "группировка по" над входными элементами типа T, группируя элементы по функции классификации и возвращая результаты в Map. Функция классификации отображает элементы в некоторый тип ключа K. Коллектор производит Map<K, List<T>>, ключи которого являются результатами применения функции классификации к входным элементам, а соответствующие значения — List, содержащие входные элементы, которые отображаются на соответствующий ключ по функции классификации.
Тип, изменяемость, сериализуемость или потокобезопасность объектов Map или List не гарантируются.
- Требования к реализации:
- Это производит результат, аналогичный:
groupingBy(classifier, toList()); - Примечание о реализации:
- Возвращаемый
Collectorне является конкурентным. Для параллельных потоковых конвейеров функцияcombinerработает путём слияния ключей из одной карты в другую, что может быть дорогостоящей операцией. Если сохранение порядка, в котором элементы появляются в результирующемMapколлекторе, не требуется, использованиеgroupingByConcurrent(Function)может обеспечить лучшую параллельную производительность. - Параметры типа:
-
T- тип входных элементов -
K- тип ключей - Параметры:
-
classifier- функция классификатора, отображающая входные элементы в ключи - Возвращает:
Collector, реализующий операцию группировки- См. также:
groupingBy
public static <T, K, A, D> Collector<T,?,Map<K,D>> groupingBy(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
Collector, реализующий каскадную операцию "группировка по" над входными элементами типа T, группируя элементы по функции классификации, а затем выполняя операцию редукции над значениями, связанными с заданным ключом, с использованием указанного последующего Collector. Функция классификации отображает элементы в некоторый тип ключа K. Последующий коллектор работает над элементами типа T и производит результат типа D. Результирующий коллектор производит Map<K, D>.
Тип, изменяемость, сериализуемость или потокобезопасность возвращаемого Map не гарантируются.
Например, чтобы вычислить множество фамилий людей в каждом городе:
Map<City, Set<String>> namesByCity
= people.stream().collect(
groupingBy(Person::getCity,
mapping(Person::getLastName,
toSet())));
- Примечание о реализации:
- Возвращаемый
Collectorне является конкурентным. Для параллельных потоковых конвейеров функцияcombinerработает путём слияния ключей из одной карты в другую, что может быть дорогостоящей операцией. Если сохранение порядка, в котором элементы представлены последующему коллектору, не требуется, использованиеgroupingByConcurrent(Function, Collector)может обеспечить лучшую параллельную производительность. - Параметры типа:
-
T- тип входных элементов -
K- тип ключей -
A- промежуточный тип накопления последующего коллектора -
D- тип результата последующей редукции - Параметры:
-
classifier- функция классификатора, отображающая входные элементы в ключи -
downstream-Collector, реализующий последующую редукцию - Возвращает:
Collector, реализующий каскадную операцию группировки- См. также:
groupingBy
public static <T, K, D, A, M extends Map<K, D>> Collector<T,?,M> groupingBy(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)
Collector, реализующий каскадную операцию "группировка по" над входными элементами типа T, группируя элементы по функции классификации, а затем выполняя операцию редукции над значениями, связанными с заданным ключом, с использованием указанного последующего Collector. Map, созданный коллектором, создаётся с помощью предоставленной функции-фабрики. Функция классификации отображает элементы в некоторый тип ключа K. Последующий коллектор работает над элементами типа T и производит результат типа D. Результирующий коллектор производит Map<K, D>.
Например, чтобы вычислить множество фамилий людей в каждом городе, где имена городов отсортированы:
Map<City, Set<String>> namesByCity
= people.stream().collect(
groupingBy(Person::getCity,
TreeMap::new,
mapping(Person::getLastName,
toSet())));
- Примечание о реализации:
- Возвращаемый
Collectorне является конкурентным. Для параллельных потоковых конвейеров функцияcombinerработает путём слияния ключей из одной карты в другую, что может быть дорогостоящей операцией. Если сохранение порядка, в котором элементы представлены последующему коллектору, не требуется, использованиеgroupingByConcurrent(Function, Supplier, Collector)может обеспечить лучшую параллельную производительность. - Параметры типа:
-
T- тип входных элементов -
K- тип ключей -
D- тип результата последующей редукции -
A- промежуточный тип накопления последующего коллектора -
M- тип результирующегоMap - Параметры:
-
classifier- функция классификатора, отображающая входные элементы в ключи -
mapFactory- поставщик, предоставляющий новую пустуюMap, в которую будут вставлены результаты -
downstream-Collector, реализующий последующую редукцию - Возвращает:
Collector, реализующий каскадную операцию группировки- См. также:
группировкаПоКонкурентности
public static <T, K> Collector<T,?,ConcurrentMap<K,List<T>>> groupingByConcurrent(Function<? super T,? extends K> classifier)
Collector, реализующую операцию "группировка по" над входными элементами типа T, группируя элементы в соответствии с функцией классификации. Это коллектор concurrent и unordered.
Функция классификации сопоставляет элементы с некоторым типом ключа K. Коллектор производит ConcurrentMap<K, List<T>>, ключи которого являются результатом применения функции классификации к входным элементам, а соответствующие значения — это List, содержащие входные элементы, которые отображаются на соответствующий ключ в соответствии с функцией классификации.
Нет гарантий относительно типа, изменяемости или сериализуемости объектов ConcurrentMap или List, возвращаемых, или по поводу потокобезопасности объектов List, возвращаемых.
- Требования к реализации:
- Это производит результат, похожий на:
groupingByConcurrent(classifier, toList()); - Параметры типа:
-
T- тип входных элементов -
K- тип ключей - Параметры:
-
classifier- функция классификатора, сопоставляющая входные элементы с ключами - Возвращает:
- конкурентную, неупорядоченную
Collector, реализующую операцию группировки - См. также:
группировкаПоКонкурентности
public static <T, K, A, D> Collector<T,?,ConcurrentMap<K,D>> groupingByConcurrent(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
Collector, реализующую каскадную операцию "группировка по" над входными элементами типа T, группируя элементы в соответствии с функцией классификации и затем выполняя операцию сокращения над значениями, связанными с данным ключом, с использованием указанного последующего Collector. Это коллектор concurrent и unordered.
Функция классификации сопоставляет элементы с некоторым типом ключа K. Последующий коллектор работает с элементами типа T и производит результат типа D. Результирующий коллектор производит ConcurrentMap<K, D>.
Нет гарантий относительно типа, изменяемости или сериализуемости возвращаемого ConcurrentMap.
Например, для вычисления набора фамилий людей в каждом городе, где имена городов отсортированы:
ConcurrentMap<City, Set<String>> namesByCity
= people.stream().collect(
groupingByConcurrent(Person::getCity,
mapping(Person::getLastName,
toSet())));
- Параметры типа:
-
T- тип входных элементов -
K- тип ключей -
A- промежуточный тип накопления последующего коллектора -
D- тип результата последующего сокращения - Параметры:
-
classifier- функция классификатора, сопоставляющая входные элементы с ключами -
downstream-Collector, реализующий последующее сокращение - Возвращает:
- конкурентную, неупорядоченную
Collector, реализующую каскадную операцию группировки - См. также:
группировкаПоКонкурентности
public static <T, K, A, D, M extends ConcurrentMap<K, D>> Collector<T,?,M> groupingByConcurrent(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)
Collector, реализующую каскадную операцию "группировка по" над входными элементами типа T, группируя элементы в соответствии с функцией классификации и затем выполняя операцию сокращения над значениями, связанными с данным ключом, с использованием указанного последующего Collector. ConcurrentMap, производимый коллектором, создается с помощью предоставленной функции фабрики. Это коллектор concurrent и unordered.
Функция классификации сопоставляет элементы с некоторым типом ключа K. Последующий коллектор работает с элементами типа T и производит результат типа D. Результирующий коллектор производит ConcurrentMap<K, D>.
Например, для вычисления набора фамилий людей в каждом городе, где имена городов отсортированы:
ConcurrentMap<City, Set<String>> namesByCity
= people.stream().collect(
groupingByConcurrent(Person::getCity,
ConcurrentSkipListMap::new,
mapping(Person::getLastName,
toSet())));
- Параметры типа:
-
T- тип входных элементов -
K- тип ключей -
A- промежуточный тип накопления последующего коллектора -
D- тип результата последующего сокращения -
M- тип результирующегоConcurrentMap - Параметры:
-
classifier- функция классификатора, сопоставляющая входные элементы с ключами -
mapFactory- поставщик, предоставляющий новый пустойConcurrentMap, в который будут вставлены результаты -
downstream-Collector, реализующий последующее сокращение - Возвращает:
- конкурентную, неупорядоченную
Collector, реализующую каскадную операцию группировки - См. также:
разбиениеПо
public static <T> Collector<T,?,Map<Boolean,List<T>>> partitioningBy(Predicate<? super T> predicate)
Collector, который разбивает входные элементы в соответствии с Predicate и организует их в Map<Boolean, List<T>>. Возвращаемая Map всегда содержит отображения для ключей false и true. Нет гарантий относительно типа, изменяемости, сериализуемости или потокобезопасности возвращаемых Map или List.- Примечание API:
- Если разбиение не содержит элементов, его значение в результирующей карте будет пустым списком.
- Параметры типа:
-
T- тип входных элементов - Параметры:
-
predicate- предикат, используемый для классификации входных элементов - Возвращает:
Collector, реализующий операцию разбиения- См. также:
разбиениеПо
public static <T, D, A> Collector<T,?,Map<Boolean,D>> partitioningBy(Predicate<? super T> predicate, Collector<? super T,A,D> downstream)
Collector, который разбивает входные элементы в соответствии с Predicate, сокращает значения в каждом разбиении в соответствии с другим Collector и организует их в Map<Boolean, D>, значениями которого являются результат последующего сокращения. Возвращаемая Map всегда содержит отображения для ключей false и true. Нет гарантий относительно типа, изменяемости, сериализуемости или потокобезопасности возвращаемого Map.
- Примечание API:
- Если разбиение не содержит элементов, его значение в результирующей карте будет получено путем вызова функции поставщика последующего коллектора, а затем применения функции завершителя.
- Параметры типа:
-
T- тип входных элементов -
D- тип результата последующего сокращения -
A- промежуточный тип накопления последующего коллектора - Параметры:
-
predicate- предикат, используемый для классификации входных элементов -
downstream-Collector, реализующий последующее сокращение - Возвращает:
Collector, реализующий каскадную операцию разбиения- См. также:
toMap
public static <T, K, U> Collector<T,?,Map<K,U>> toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
Collector, который накапливает элементы в Map, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. Если отображенные ключи содержат дубликаты (согласно Object.equals(Object)), при выполнении операции со сбором данных генерируется исключение IllegalStateException. Если отображенные ключи могут иметь дубликаты, используйте toMap(Function, Function, BinaryOperator) вместо этого.
Нет никаких гарантий по типу, мутабельности, сериализуемости или потокобезопасности возвращаемого Map.
- API Note:
- Часто либо ключ, либо значение являются входными элементами. В этом случае может быть полезен вспомогательный метод
Function.identity(). Например, следующее генерируетMap, отображающее студентов на их средний балл:
А следующее генерируетMap<Student, Double> studentToGPA = students.stream().collect( toMap(Function.identity(), student -> computeGPA(student)));Map, отображающее уникальный идентификатор на студентов:Map<String, Student> studentIdToStudent = students.stream().collect( toMap(Student::getId, Function.identity())); - Implementation Note:
- Возвращаемый
Collectorне является потокобезопасным. Для параллельных потоков данных, функцияcombinerработает путем объединения ключей одной карты в другую, что может быть дорогостоящей операцией. Если не требуется, чтобы результаты вставлялись вMapв порядке их появления, использованиеtoConcurrentMap(Function, Function)может обеспечить лучшую параллельную производительность. - Type Parameters:
-
T- тип входных элементов -
K- тип выходного значения функции отображения ключей -
U- тип выходного значения функции отображения значений - Parameters:
-
keyMapper- функция отображения для создания ключей -
valueMapper- функция отображения для создания значений - Returns:
Collector, который собирает элементы вMap, ключи и значения которого являются результатом применения функций отображения к входным элементам- See Also:
toUnmodifiableMap
public static <T, K, U> Collector<T,?,Map<K,U>> toUnmodifiableMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
Collector, который накапливает входные элементы в неизменяемую карту, ключи и значения которой являются результатом применения предоставленных функций отображения к входным элементам. Если отображенные ключи содержат дубликаты (согласно Object.equals(Object)), при выполнении операции со сбором данных генерируется исключение IllegalStateException. Если отображенные ключи могут иметь дубликаты, используйте toUnmodifiableMap(Function, Function, BinaryOperator) для обработки слияния значений.
Возвращаемый сборщик запрещает нулевые ключи и значения. Если любая функция отображения возвращает null, будет выброшено исключение NullPointerException.
- Type Parameters:
-
T- тип входных элементов -
K- тип выходного значения функции отображения ключей -
U- тип выходного значения функции отображения значений - Parameters:
-
keyMapper- функция отображения для создания ключей, не должна быть null -
valueMapper- функция отображения для создания значений, не должна быть null - Returns:
Collector, который накапливает входные элементы в неизменяемую карту, ключи и значения которой являются результатом применения предоставленных функций отображения к входным элементам- Throws:
-
NullPointerException- если keyMapper или valueMapper равны null - Since:
- 10
- See Also:
toMap
public static <T, K, U> Collector<T,?,Map<K,U>> toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
Collector, который накапливает элементы в Map, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. Если отображенные ключи содержат дубликаты (согласно Object.equals(Object)), функция отображения значений применяется к каждому равному элементу, а результаты объединяются с использованием предоставленной функции объединения.
Нет никаких гарантий по типу, мутабельности, сериализуемости или потокобезопасности возвращаемого Map.
- API Note:
- Существует несколько способов обработки коллизий между несколькими элементами, отображающимися на один и тот же ключ. Другие формы
toMapпросто используют функцию слияния, которая безусловно выбрасывает исключение, но вы можете легко написать более гибкие политики слияния. Например, если у вас есть потокPerson, и вы хотите создать "телефонный справочник", отображающий имя на адрес, но возможно, что у двух человек одинаковые имена, вы можете сделать следующее, чтобы корректно обрабатывать эти коллизии и создатьMap, отображающий имена на список адресов:Map<String, String> phoneBook = people.stream().collect( toMap(Person::getName, Person::getAddress, (s, a) -> s + ", " + a)); - Implementation Note:
- Возвращаемый
Collectorне является потокобезопасным. Для параллельных потоков данных, функцияcombinerработает путем слияния ключей одной карты в другую, что может быть дорогостоящей операцией. Если не требуется, чтобы результаты сливались вMapв порядке их появления, использованиеtoConcurrentMap(Function, Function, BinaryOperator)может обеспечить лучшую параллельную производительность. - Type Parameters:
-
T- тип входных элементов -
K- тип выходного значения функции отображения ключей -
U- тип выходного значения функции отображения значений - Parameters:
-
keyMapper- функция отображения для создания ключей -
valueMapper- функция отображения для создания значений -
mergeFunction- функция слияния, используемая для разрешения коллизий между значениями, связанными с одним ключом, как вMap.merge(Object, Object, BiFunction) - Returns:
Collector, который собирает элементы вMap, ключи которого являются результатом применения функции отображения ключей к входным элементам, а значения — результатом применения функции отображения значений ко всем входным элементам, равным ключу, и объединения их с помощью функции слияния- See Also:
toUnmodifiableMap
public static <T, K, U> Collector<T,?,Map<K,U>> toUnmodifiableMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
Collector, который накапливает входные элементы в неизменяемую карту, ключи и значения которой являются результатом применения предоставленных функций отображения к входным элементам. Если отображенные ключи содержат дубликаты (согласно Object.equals(Object)), функция отображения значений применяется к каждому равному элементу, а результаты объединяются с использованием предоставленной функции объединения.
Возвращаемый сборщик запрещает нулевые ключи и значения. Если любая функция отображения возвращает null, будет выброшено исключение NullPointerException.
- Type Parameters:
-
T- тип входных элементов -
K- тип выходного значения функции отображения ключей -
U- тип выходного значения функции отображения значений - Parameters:
-
keyMapper- функция отображения для создания ключей, не должна быть null -
valueMapper- функция отображения для создания значений, не должна быть null -
mergeFunction- функция слияния, используемая для разрешения коллизий между значениями, связанными с одним ключом, как вMap.merge(Object, Object, BiFunction), не должна быть null - Returns:
Collector, который накапливает входные элементы в неизменяемую карту, ключи и значения которой являются результатом применения предоставленных функций отображения к входным элементам- Throws:
-
NullPointerException- если keyMapper, valueMapper или mergeFunction равны null - Since:
- 10
- See Also:
toMap
public static <T, K, U, M extends Map<K, U>> Collector<T,?,M> toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapFactory)
Collector, который накапливает элементы в Map, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. Если отображённые ключи содержат дубликаты (в соответствии с Object.equals(Object)), функция отображения значений применяется к каждому равному элементу, а результаты объединяются с помощью предоставленной функции слияния. Map создаётся с помощью предоставленной функции поставщика.
- Примечание об реализации:
- Возвращаемый
Collectorне является конкурентным. Для параллельных потоковых конвейеров функцияcombinerработает путём слияния ключей из одной карты в другую, что может быть дорогостоящей операцией. Если не требуется, чтобы результаты сливались вMapв порядке их появления, использованиеtoConcurrentMap(Function, Function, BinaryOperator, Supplier)может обеспечить лучшую параллельную производительность. - Параметры типа:
-
T- тип входных элементов -
K- тип выходного значения функции отображения ключа -
U- тип выходного значения функции отображения значения -
M- тип результирующегоMap - Параметры:
-
keyMapper- функция отображения для создания ключей -
valueMapper- функция отображения для создания значений -
mergeFunction- функция слияния, используемая для разрешения коллизий между значениями, связанными с одним и тем же ключом, как предоставляется вMap.merge(Object, Object, BiFunction) -
mapFactory- поставщик, предоставляющий новую пустуюMap, в которую будут вставлены результаты - Возвращаемое значение:
Collector, который собирает элементы вMap, ключи которого являются результатом применения функции отображения ключа к входным элементам, а значения — результатом применения функции отображения значения ко всем входным элементам, равным ключу, и объединения их с помощью функции слияния- См. также:
toConcurrentMap
public static <T, K, U> Collector<T,?,ConcurrentMap<K,U>> toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
Collector, который накапливает элементы в ConcurrentMap, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. Если отображённые ключи содержат дубликаты (в соответствии с Object.equals(Object)), при выполнении операции сбора будет брошено исключение IllegalStateException. Если отображённые ключи могут иметь дубликаты, используйте toConcurrentMap(Function, Function, BinaryOperator) вместо этого.
Тип, изменяемость и сериализуемость возвращаемого ConcurrentMap не гарантируются.
- Примечание API:
- Часто либо ключ, либо значение являются входными элементами. В этом случае может быть полезен вспомогательный метод
Function.identity(). Например, следующее производитConcurrentMap, сопоставляющий студентов с их средним баллом:
А следующее производитConcurrentMap<Student, Double> studentToGPA = students.stream().collect( toConcurrentMap(Function.identity(), student -> computeGPA(student)));ConcurrentMap, сопоставляющий уникальный идентификатор со студентами:ConcurrentMap<String, Student> studentIdToStudent = students.stream().collect( toConcurrentMap(Student::getId, Function.identity()));Это
concurrentиunorderedколлектор. - Параметры типа:
-
T- тип входных элементов -
K- тип выходного значения функции отображения ключа -
U- тип выходного значения функции отображения значения - Параметры:
-
keyMapper- функция отображения для создания ключей -
valueMapper- функция отображения для создания значений - Возвращаемое значение:
- конкурентный, неупорядоченный
Collector, который собирает элементы вConcurrentMap, ключи которого являются результатом применения функции отображения ключа к входным элементам, а значения — результатом применения функции отображения значения к входным элементам - См. также:
toConcurrentMap
public static <T, K, U> Collector<T,?,ConcurrentMap<K,U>> toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
Collector, который накапливает элементы в ConcurrentMap, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам. Если отображённые ключи содержат дубликаты (в соответствии с Object.equals(Object)), функция отображения значений применяется к каждому равному элементу, а результаты объединяются с помощью предоставленной функции слияния.
Тип, изменяемость и сериализуемость возвращаемого ConcurrentMap не гарантируются.
- Примечание API:
- Существует несколько способов обработки коллизий между несколькими элементами, отображаемыми на один и тот же ключ. Другие формы
toConcurrentMapпросто используют функцию слияния, которая безусловно выбрасывает исключение, но вы легко можете написать более гибкие политики слияния. Например, если у вас есть потокPerson, и вы хотите создать «телефонный справочник», отображающий имя на адрес, но возможно, что у двух человек одинаковое имя, вы можете сделать следующее, чтобы справиться с этими коллизиями и создатьConcurrentMap, отображающий имена на конкатенированный список адресов:ConcurrentMap<String, String> phoneBook = people.stream().collect( toConcurrentMap(Person::getName, Person::getAddress, (s, a) -> s + ", " + a));Это
concurrentиunorderedколлектор. - Параметры типа:
-
T- тип входных элементов -
K- тип выходного значения функции отображения ключа -
U- тип выходного значения функции отображения значения - Параметры:
-
keyMapper- функция отображения для создания ключей -
valueMapper- функция отображения для создания значений -
mergeFunction- функция слияния, используемая для разрешения коллизий между значениями, связанными с одним и тем же ключом, как предоставляется вMap.merge(Object, Object, BiFunction) - Возвращаемое значение:
- конкурентный, неупорядоченный
Collector, который собирает элементы вConcurrentMap, ключи которого являются результатом применения функции отображения ключа к входным элементам, а значения — результатом применения функции отображения значения ко всем входным элементам, равным ключу, и объединения их с помощью функции слияния - См. также:
toConcurrentMap
public static <T, K, U, M extends ConcurrentMap<K, U>> Collector<T,?,M> toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapFactory)
Collector, которое накапливает элементы в ConcurrentMap, ключи и значения которого являются результатом применения предоставленных функций отображения к входным элементам.
Если отображённые ключи содержат дубликаты (в соответствии с Object.equals(Object)), функция отображения значений применяется к каждому совпадающему элементу, а результаты объединяются с помощью предоставленной функции слияния. ConcurrentMap создаётся с помощью предоставленной функции поставщика.
Это коллектор concurrent и unordered.
- Type Parameters:
-
T- тип входных элементов -
K- выходной тип функции отображения ключей -
U- выходной тип функции отображения значений -
M- тип результирующегоConcurrentMap - Parameters:
-
keyMapper- функция отображения для создания ключей -
valueMapper- функция отображения для создания значений -
mergeFunction- функция слияния, используемая для разрешения коллизий между значениями, связанными с одним ключом, как предоставлено вMap.merge(Object, Object, BiFunction) -
mapFactory- поставщик, предоставляющий новую пустуюConcurrentMap, в которую будут вставлены результаты - Returns:
- конкурирующее, неупорядоченное
Collector, которое собирает элементы вConcurrentMap, ключи которого являются результатом применения функции отображения ключей к входным элементам, а значения — результатом применения функции отображения значений ко всем входным элементам, равным ключу, и объединения их с помощью функции слияния - See Also:
summarizingInt
public static <T> Collector<T,?,IntSummaryStatistics> summarizingInt(ToIntFunction<? super T> mapper)
Collector, которая применяет функцию отображения, производящую целочисленные значения, к каждому входному элементу и возвращает статистические данные о полученных значениях.- Type Parameters:
-
T- тип входных элементов - Parameters:
-
mapper- функция отображения, применяемая к каждому элементу - Returns:
Collector, реализующая сводную статистику- See Also:
summarizingLong
public static <T> Collector<T,?,LongSummaryStatistics> summarizingLong(ToLongFunction<? super T> mapper)
Collector, которая применяет функцию отображения, производящую значения типа long, к каждому входному элементу и возвращает статистические данные о полученных значениях.- Type Parameters:
-
T- тип входных элементов - Parameters:
-
mapper- функция отображения, применяемая к каждому элементу - Returns:
Collector, реализующая сводную статистику- See Also:
summarizingDouble
public static <T> Collector<T,?,DoubleSummaryStatistics> summarizingDouble(ToDoubleFunction<? super T> mapper)
Collector, которая применяет функцию отображения, производящую значения типа double, к каждому входному элементу и возвращает статистические данные о полученных значениях.- Type Parameters:
-
T- тип входных элементов - Parameters:
-
mapper- функция отображения, применяемая к каждому элементу - Returns:
Collector, реализующая сводную статистику- See Also:
teeing
public static <T, R1, R2, R> Collector<T,?,R> teeing(Collector<? super T,?,R1> downstream1, Collector<? super T,?,R2> downstream2, BiFunction<? super R1,? super R2,R> merger)
Collector, которая является композицией двух коллекторов по обработке данных. Каждый элемент, переданный в результирующий коллектор, обрабатывается обоими коллекторами, а затем их результаты объединяются с помощью указанной функции слияния в окончательный результат.
Результирующий коллектор выполняет следующие действия:
- поставщик: создаёт контейнер результата, содержащий контейнеры результатов, полученные при вызове поставщика каждого коллектора
- аккумулятор: вызывает аккумулятор каждого коллектора с его контейнером результата и входным элементом
- комбинатор: вызывает комбинатор каждого коллектора с двумя контейнерами результатов
- завершающий обработчик: вызывает завершающий обработчик каждого коллектора с его контейнером результата, а затем вызывает предоставленный объединитель и возвращает его результат.
Получающийся коллектор является Collector.Characteristics.UNORDERED, если оба коллектора по обработке данных являются неупорядоченными, и Collector.Characteristics.CONCURRENT, если оба коллектора по обработке данных являются конкурирующими.
- Type Parameters:
-
T- тип входных элементов -
R1- тип результата первого коллектора -
R2- тип результата второго коллектора -
R- тип окончательного результата - Parameters:
-
downstream1- первый коллектор по обработке данных -
downstream2- второй коллектор по обработке данных -
merger- функция, которая объединяет два результата в один - Returns:
Collector, который агрегирует результаты двух предоставленных коллекторов.- Since:
- 12
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/stream/Collectors.html