Spec-Zone.ru › OpenJDK 27

Класс Gatherers

java.lang.Object
java.util.stream.Gatherers
public final class Gatherers extends Object
Реализации Gatherer, предоставляющие полезные промежуточные операции, такие как функции формирования окон, функции свёртки, параллельное преобразование элементов и т. д.
С версии:
24

Краткое описание методов

Модификатор и тип Метод Описание
static <T,R> Gatherer<T,?,R> fold(Supplier<R> initial, BiFunction<? super R, ? super T, ? extends R> folder)
Возвращает Gatherer, выполняющий упорядоченное преобразование, похожее на сведение, для сценариев, в которых невозможно реализовать функцию-комбинатор, или для сведений, изначально зависящих от порядка.
static <T,R> Gatherer<T,?,R> mapConcurrent(int maxConcurrency, Function<? super T, ? extends R> mapper)
Операция, выполняющая функцию параллельно с заданным максимальным уровнем параллелизма с использованием виртуальных потоков.
static <T,R> Gatherer<T,?,R> scan(Supplier<R> initial, BiFunction<? super R, ? super T, ? extends R> scanner)
Возвращает Gatherer, выполняющий префиксное сканирование — инкрементальное накопление — с использованием предоставленных функций.
static <TR> Gatherer<TR,?,List<TR>> windowFixed(int windowSize)
Возвращает Gatherer, собирающий элементы в окна — упорядоченные по порядку следования группы элементов — фиксированного размера.
static <TR> Gatherer<TR,?,List<TR>> windowSliding(int windowSize)
Возвращает Gatherer, собирающий элементы в окна — упорядоченные по порядку следования группы элементов — заданного размера, где каждое следующее окно включает все элементы предыдущего окна, кроме самого старого, и добавляет следующий элемент потока.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание методов

windowFixed

public static <TR> Gatherer<TR,?,List<TR>> windowFixed(int windowSize)
Возвращает Gatherer, собирающий элементы в окна — упорядоченные по порядку следования группы элементов — фиксированного размера. Если поток пуст, окно создано не будет. Последнее окно может содержать меньше элементов, чем заданный размер окна.

Пример:

// will contain: [[1, 2, 3], [4, 5, 6], [7, 8]]
List<List<Integer>> windows =
    Stream.of(1,2,3,4,5,6,7,8).gather(Gatherers.windowFixed(3)).toList();
Примечание API:
Для повышения эффективности окна могут выделяться в памяти последовательно и заранее. Это означает, что выбор большого размера окна для короткого потока может привести к чрезмерному использованию памяти во время выполнения этой операции.
Требования к реализации:
Каждое созданное окно является неизменяемым списком; вызовы любого метода-мутатора всегда приводят к выбросу UnsupportedOperationException. Тип реализации и возможность сериализации созданных списков не гарантируются.
Параметры типа:
TR — тип элементов, потребляемых возвращаемым сборщиком, и содержимого создаваемых им окон
Параметры:
windowSize — размер окон
Возвращает:
новый сборщик, группирующий элементы в окна фиксированного размера
Выбрасывает:
IllegalArgumentException — если windowSize меньше 1

windowSliding

public static <TR> Gatherer<TR,?,List<TR>> windowSliding(int windowSize)
Возвращает Gatherer, собирающий элементы в окна — упорядоченные по порядку следования группы элементов — заданного размера, где каждое следующее окно включает все элементы предыдущего окна, кроме самого старого, и добавляет следующий элемент потока. Если поток пуст, окно создано не будет. Если размер потока меньше размера окна, будет создано только одно окно, содержащее все элементы потока.

Пример:

// will contain: [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8]]
List<List<Integer>> windows2 =
    Stream.of(1,2,3,4,5,6,7,8).gather(Gatherers.windowSliding(2)).toList();

// will contain: [[1, 2, 3, 4, 5, 6], [2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8]]
List<List<Integer>> windows6 =
    Stream.of(1,2,3,4,5,6,7,8).gather(Gatherers.windowSliding(6)).toList();
Примечание API:
Для повышения эффективности окна могут выделяться в памяти последовательно и заранее. Это означает, что выбор большого размера окна для короткого потока может привести к чрезмерному использованию памяти во время выполнения этой операции.
Требования к реализации:
Каждое созданное окно является неизменяемым списком; вызовы любого метода-мутатора всегда приводят к выбросу UnsupportedOperationException. Тип реализации и возможность сериализации созданных списков не гарантируются.
Параметры типа:
TR — тип элементов, потребляемых возвращаемым сборщиком, и содержимого создаваемых им окон
Параметры:
windowSize — размер окон
Возвращает:
новый сборщик, группирующий элементы в скользящие окна
Выбрасывает:
IllegalArgumentException — если windowSize меньше 1

fold

public static <T,R> Gatherer<T,?,R> fold(Supplier<R> initial, BiFunction<? super R, ? super T, ? extends R> folder)
Возвращает Gatherer, выполняющий упорядоченное преобразование, похожее на сведение, для сценариев, в которых невозможно реализовать функцию-комбинатор, или для сведений, изначально зависящих от порядка.
Требования к реализации:
Если во время обработки не возникает исключений, эта операция создает не более одного элемента.

Пример:

// will contain: Optional["123456789"]
Optional<String> numberString =
    Stream.of(1,2,3,4,5,6,7,8,9)
          .gather(
              Gatherers.fold(() -> "", (string, number) -> string + number)
           )
          .findFirst();
Параметры типа:
T — тип элементов, потребляемых возвращаемым сборщиком
R — тип элементов, создаваемых возвращаемым сборщиком
Параметры:
initial — начальное значение операции свёртки
folder — функция свёртки
Возвращает:
новый Gatherer
Выбрасывает:
NullPointerException — если любой из параметров равен null
См. также:
  • Stream.reduce(Object, BinaryOperator)

scan

public static <T,R> Gatherer<T,?,R> scan(Supplier<R> initial, BiFunction<? super R, ? super T, ? extends R> scanner)
Возвращает Gatherer, выполняющий префиксное сканирование — инкрементальное накопление — с использованием предоставленных функций. Начиная с начального значения, полученного от Supplier, каждое последующее значение получается применением BiFunction к текущему значению и следующему входному элементу, после чего полученное значение передается дальше по потоку.

Пример:

// will contain: ["1", "12", "123", "1234", "12345", "123456", "1234567", "12345678", "123456789"]
List<String> numberStrings =
    Stream.of(1,2,3,4,5,6,7,8,9)
          .gather(
              Gatherers.scan(() -> "", (string, number) -> string + number)
           )
          .toList();
Параметры типа:
T — тип элементов, потребляемых этим сборщиком
R — тип элементов, создаваемых этим сборщиком
Параметры:
initial — поставщик начального значения для сканера
scanner — функция, применяемая к каждому элементу
Возвращает:
новый Gatherer, выполняющий префиксное сканирование
Выбрасывает:
NullPointerException — если любой из параметров равен null

mapConcurrent

public static <T,R> Gatherer<T,?,R> mapConcurrent(int maxConcurrency, Function<? super T, ? extends R> mapper)
Операция, выполняющая функцию параллельно с заданным максимальным уровнем параллелизма с использованием виртуальных потоков. Эта операция сохраняет порядок элементов потока.
Примечание API:
Предпринимаются попытки отменить выполняющиеся задачи, насколько это возможно, если последующему этапу обработки больше не требуются элементы.
Требования к реализации:
Если результат функции должен быть передан на следующий этап обработки, но выполнение функции завершилось с исключением, этот метод вместо этого повторно выбросит соответствующее исключение как экземпляр RuntimeException, после чего все оставшиеся задачи будут отменены.
Параметры типа:
T — тип входных данных
R — тип выходных данных
Параметры:
maxConcurrency — желаемый максимальный уровень параллелизма
mapper — функция, выполняемая параллельно
Возвращает:
новый Gatherer
Выбрасывает:
IllegalArgumentException — если maxConcurrency меньше 1
NullPointerException — если mapper равен null

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API