Класс Gatherers
java.lang.Object
java.util.stream.Gatherers
public final class Gatherers extends Object
Реализации
Gatherer, предоставляющие полезные промежуточные операции, такие как функции формирования окон, функции свёртки, параллельное преобразование элементов и т. д.- С версии:
- 24
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static <T, |
fold |
Возвращает Gatherer, выполняющий упорядоченное преобразование, похожее на сведение, для сценариев, в которых невозможно реализовать функцию-комбинатор, или для сведений, изначально зависящих от порядка. |
static <T, |
mapConcurrent |
Операция, выполняющая функцию параллельно с заданным максимальным уровнем параллелизма с использованием виртуальных потоков. |
static <T, |
scan |
Возвращает Gatherer, выполняющий префиксное сканирование — инкрементальное накопление — с использованием предоставленных функций. |
static <TR> Gatherer |
windowFixed |
Возвращает Gatherer, собирающий элементы в окна — упорядоченные по порядку следования группы элементов — фиксированного размера. |
static <TR> Gatherer |
windowSliding |
Возвращает Gatherer, собирающий элементы в окна — упорядоченные по порядку следования группы элементов — заданного размера, где каждое следующее окно включает все элементы предыдущего окна, кроме самого старого, и добавляет следующий элемент потока. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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 - См. также:
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
© 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.