Spec-Zone.ru › OpenJDK 21

Интерфейс IntStream

Все суперинтерфейсы:
AutoCloseable, BaseStream<Integer,IntStream>
public interface IntStream extends BaseStream<Integer,IntStream>
Последовательность примитивных элементов int, поддерживающая последовательные и параллельные агрегатные операции. Это примитивное специализированное представление Stream.

Следующий пример демонстрирует агрегатную операцию с использованием Stream и IntStream, вычисляющую сумму весов красных виджетов:


     int sum = widgets.stream()
                      .filter(w -> w.getColor() == RED)
                      .mapToInt(w -> w.getWeight())
                      .sum();
 
См. документацию класса для Stream и документацию пакета для java.util.stream для дополнительной спецификации потоков, операций с потоками, потоковых конвейеров и параллелизма.
С:
1.8
См. также:
  • Stream
  • java.util.stream

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static interface  IntStream.Builder
Изменяемый билдер для IntStream.
static interface  IntStream.IntMapMultiConsumer
Представляет операцию, которая принимает аргумент типа int и IntConsumer, и не возвращает результата.

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

Modifier and Type Method Description
boolean allMatch(IntPredicate predicate)
Возвращает значение, указывающее, соответствуют ли все элементы этого потока предоставленному предикату.
boolean anyMatch(IntPredicate predicate)
Возвращает значение, указывающее, соответствует ли хоть один элемент этого потока предоставленному предикату.
DoubleStream asDoubleStream()
Возвращает DoubleStream, состоящий из элементов этого потока, преобразованных в double.
LongStream asLongStream()
Возвращает LongStream, состоящий из элементов этого потока, преобразованных в long.
OptionalDouble average()
Возвращает OptionalDouble, описывающий среднее арифметическое элементов этого потока, или пустой необязательный объект, если этот поток пуст.
Stream<Integer> boxed()
Возвращает Stream, состоящий из элементов этого потока, каждый из которых упакован в Integer.
static IntStream.Builder builder()
Возвращает билдер для IntStream.
<R> R collect(Supplier<R> supplier, ObjIntConsumer<R> accumulator, BiConsumer<R,R> combiner)
Выполняет операцию изменяющего сокращения над элементами этого потока.
static IntStream concat(IntStream a, IntStream b)
Создает лениво конкатенированный поток, элементы которого представляют собой все элементы первого потока, за которыми следуют все элементы второго потока.
long count()
Возвращает количество элементов в этом потоке.
IntStream distinct()
Возвращает поток, состоящий из уникальных элементов этого потока.
default IntStream dropWhile(IntPredicate predicate)
Возвращает, если этот поток упорядочен, поток, состоящий из оставшихся элементов этого потока после удаления наибольшего префикса элементов, которые соответствуют заданному предикату.
static IntStream empty()
Возвращает пустой последовательный IntStream.
IntStream filter(IntPredicate predicate)
Возвращает поток, состоящий из элементов этого потока, которые соответствуют заданному предикату.
OptionalInt findAny()
Возвращает OptionalInt, описывающий некоторый элемент потока, или пустой OptionalInt если поток пуст.
OptionalInt findFirst()
Возвращает OptionalInt, описывающий первый элемент этого потока, или пустой OptionalInt если поток пуст.
IntStream flatMap(IntFunction<? extends IntStream> mapper)
Возвращает поток, состоящий из результатов замены каждого элемента этого потока содержимым сопоставленного потока, созданного путем применения предоставленной функции сопоставления к каждому элементу.
void forEach(IntConsumer action)
Выполняет действие для каждого элемента этого потока.
void forEachOrdered(IntConsumer action)
Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в порядке встречи для потоков, имеющих определенный порядок встречи.
static IntStream generate(IntSupplier s)
Возвращает бесконечный последовательный неупорядоченный поток, где каждый элемент генерируется предоставленной IntSupplier.
static IntStream iterate(int seed, IntPredicate hasNext, IntUnaryOperator next)
Возвращает упорядоченный последовательный IntStream, полученный путем итеративного применения заданной функции next к начальному элементу, при условии выполнения заданного предикатом hasNext.
static IntStream iterate(int seed, IntUnaryOperator f)
Возвращает бесконечный упорядоченный последовательный IntStream, полученный путем итеративного применения функции f к начальному элементу seed, что приводит к Stream, состоящему из seed, f(seed), f(f(seed)), и т.д.
IntStream limit(long maxSize)
Возвращает поток, состоящий из элементов этого потока, укороченный до длины не более maxSize.
IntStream map(IntUnaryOperator mapper)
Возвращает поток, состоящий из результатов применения данной функции к элементам этого потока.
default IntStream mapMulti(IntStream.IntMapMultiConsumer mapper)
Возвращает поток, состоящий из результатов замены каждого элемента этого потока несколькими элементами, то есть нулем или более элементами.
DoubleStream mapToDouble(IntToDoubleFunction mapper)
Возвращает DoubleStream, состоящий из результатов применения данной функции к элементам этого потока.
LongStream mapToLong(IntToLongFunction mapper)
Возвращает LongStream, состоящий из результатов применения данной функции к элементам этого потока.
<U> Stream<U> mapToObj(IntFunction<? extends U> mapper)
Возвращает Stream, содержащий значения, полученные применением заданной функции к элементам этого потока.
OptionalInt max()
Возвращает OptionalInt, описывающий максимальный элемент этого потока, или пустой необязательный объект, если этот поток пуст.
OptionalInt min()
Возвращает OptionalInt, описывающий минимальный элемент этого потока, или пустой необязательный объект, если этот поток пуст.
boolean noneMatch(IntPredicate predicate)
Возвращает значение, указывающее, не соответствуют ли элементы этого потока предоставленному предикату.
static IntStream of(int t)
Возвращает последовательный IntStream, содержащий один элемент.
static IntStream of(int... values)
Возвращает упорядоченный последовательный поток, элементы которого являются указанными значениями.
IntStream peek(IntConsumer action)
Возвращает поток, состоящий из элементов этого потока, дополнительно выполняющий указанное действие над каждым элементом при потребление элементов из результирующего потока.
static IntStream range(int startInclusive, int endExclusive)
Возвращает упорядоченный последовательный IntStream от startInclusive (включительно) до endExclusive (исключительно) с увеличением на 1.
static IntStream rangeClosed(int startInclusive, int endInclusive)
Возвращает упорядоченный последовательный IntStream от startInclusive (включительно) до endInclusive (включительно) с увеличением на 1.
int reduce(int identity, IntBinaryOperator op)
Выполняет операцию сокращения над элементами этого потока, используя предоставленное значение тождества и функцию накопления ассоциативную, и возвращает значение сокращения.
OptionalInt reduce(IntBinaryOperator op)
Выполняет операцию сокращения над элементами этого потока, используя ассоциативную функцию накопления, и возвращает OptionalInt, описывающий значение сокращения, если оно есть.
IntStream skip(long n)
Возвращает поток, состоящий из оставшихся элементов этого потока после отбрасывания первых n элементов потока.
IntStream sorted()
Возвращает поток, состоящий из элементов этого потока в отсортированном порядке.
int sum()
Возвращает сумму элементов в этом потоке.
IntSummaryStatistics summaryStatistics()
Возвращает IntSummaryStatistics, описывающий различные сводные данные об элементах этого потока.
default IntStream takeWhile(IntPredicate predicate)
Возвращает, если этот поток упорядочен, поток, состоящий из наибольшего префикса элементов, взятых из этого потока, которые соответствуют данному предикату.
int[] toArray()
Возвращает массив, содержащий элементы этого потока.

Методы, объявленные в интерфейсе java.util.stream.BaseStream

close, isParallel, iterator, onClose, parallel, sequential, spliterator, unordered

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

filter

IntStream filter(IntPredicate predicate)
Возвращает поток, содержащий элементы этого потока, которые соответствуют заданному предикату.

Это промежуточная операция.

Параметры:
predicate - предикат, применяемый к каждому элементу для определения того, следует ли его включать; он является невмешивающимся и бессостоятельным.
Возвращает:
новый поток

map

IntStream map(IntUnaryOperator mapper)
Возвращает поток, содержащий результаты применения заданной функции к элементам этого потока.

Это промежуточная операция.

Параметры:
mapper - функция, применяемая к каждому элементу; она является невмешивающейся и бессостоятельной.
Возвращает:
новый поток

mapToObj

<U> Stream<U> mapToObj(IntFunction<? extends U> mapper)
Возвращает поток с объектным значением Stream , содержащий результаты применения заданной функции к элементам этого потока.

Это промежуточная операция.

Параметры типа:
U - тип элементов нового потока
Параметры:
mapper - функция, применяемая к каждому элементу; она является невмешивающейся и бессостоятельной.
Возвращает:
новый поток

mapToLong

LongStream mapToLong(IntToLongFunction mapper)
Возвращает поток LongStream , содержащий результаты применения заданной функции к элементам этого потока.

Это промежуточная операция.

Параметры:
mapper - функция, применяемая к каждому элементу; она является невмешивающейся и бессостоятельной.
Возвращает:
новый поток

mapToDouble

DoubleStream mapToDouble(IntToDoubleFunction mapper)
Возвращает поток DoubleStream , содержащий результаты применения заданной функции к элементам этого потока.

Это промежуточная операция.

Параметры:
mapper - функция, применяемая к каждому элементу; она является невмешивающейся и бессостоятельной.
Возвращает:
новый поток

flatMap

IntStream flatMap(IntFunction<? extends IntStream> mapper)
Возвращает поток, содержащий результаты замены каждого элемента этого потока содержимым сопоставленного потока, полученного путем применения предоставленной функции отображения к каждому элементу. Каждый сопоставленный поток closed после того, как его содержимое было помещено в этот поток. (Если сопоставленный поток null , вместо него используется пустой поток.)

Это промежуточная операция.

Параметры:
mapper - функция, применяемая к каждому элементу, которая генерирует IntStream новых значений; она является невмешивающейся и бессостоятельной.
Возвращает:
новый поток
См. также:
  • Stream.flatMap(Function)

mapMulti

default IntStream mapMulti(IntStream.IntMapMultiConsumer mapper)
Возвращает поток, содержащий результаты замены каждого элемента этого потока несколькими элементами, то есть нулем или более элементами. Замена выполняется путем применения предоставленной функции отображения к каждому элементу в сочетании с аргументом потребителя, который принимает элементы замены. Функция отображения вызывает потребителя ноль или более раз, чтобы предоставить элементы замены.

Это промежуточная операция.

Если аргумент потребителя используется вне области его применения к функции отображения, результаты не определены.

Требования к реализации:
По умолчанию реализация вызывает flatMap в этом потоке, передавая функцию, которая работает следующим образом. Сначала она вызывает функцию отображения с IntConsumer , которая накапливает элементы замены в новый внутренний буфер. Когда функция отображения возвращается, она создает IntStream из внутреннего буфера. Наконец, она возвращает этот поток flatMap.
Параметры:
mapper - невмешивающаяся, бессостоятельная функция, генерирующая элементы замены.
Возвращает:
новый поток
Дата выпуска:
16
См. также:
  • Stream.mapMulti

distinct

IntStream distinct()
Возвращает поток, содержащий уникальные элементы этого потока.

Это состоятельная промежуточная операция.

Возвращает:
новый поток

sorted

IntStream sorted()
Возвращает поток, содержащий элементы этого потока в отсортированном порядке.

Это состоятельная промежуточная операция.

Возвращает:
новый поток

peek

IntStream peek(IntConsumer action)
Возвращает поток, содержащий элементы этого потока, дополнительно выполняя предоставленное действие над каждым элементом по мере потребления элементов из результирующего потока.

Это промежуточная операция.

Для параллельных потоковых конвейеров действие может вызываться в любое время и в любой потоке, в котором элемент становится доступным от предшествующей операции. Если действие изменяет общие состояния, оно отвечает за обеспечение необходимой синхронизации.

Примечание API:
Этот метод существует в основном для отладки, где вы хотите увидеть элементы по мере их прохождения через определенную точку в конвейере:

     IntStream.of(1, 2, 3, 4)
         .filter(e -> e > 2)
         .peek(e -> System.out.println("Filtered value: " + e))
         .map(e -> e * e)
         .peek(e -> System.out.println("Mapped value: " + e))
         .sum();
 

В случаях, когда реализация потока может оптимизировать исключение создания некоторых или всех элементов (например, с помощью операций короткого замыкания, таких как findFirst, или в примере, описанном в count()), действие не будет вызвано для этих элементов.

Параметры:
action - невмешивающееся действие, выполняемое над элементами по мере их потребления из потока
Возвращает:
новый поток

limit

IntStream limit(long maxSize)
Возвращает поток, содержащий элементы этого потока, усечённые до максимальной длины maxSize.

Это операция промежуточного короткого замыкания с состоянием.

Примечание API:
Хотя limit() обычно является недорогим действием для последовательных потоковых конвейеров, это может быть довольно дорогостоящим для упорядоченных параллельных конвейеров, особенно для больших значений maxSize, так как limit(n) должен вернуть не просто любые n элементов, а первые n элементов в порядке их обнаружения. Использование неупорядоченного источника потока (например, generate(IntSupplier)) или удаление ограничения упорядоченности с помощью BaseStream.unordered() может значительно ускорить limit() в параллельных конвейерах, если семантика вашей ситуации это допускает. Если необходима согласованность с порядком обнаружения, и вы испытываете плохую производительность или использование памяти с limit() в параллельных конвейерах, переход к последовательному выполнению с помощью BaseStream.sequential() может улучшить производительность.
Параметры:
maxSize - количество элементов, до которого должен быть ограничен поток
Возвращает:
новый поток
Исключения:
IllegalArgumentException - если maxSize отрицательно

skip

IntStream skip(long n)
Возвращает поток, содержащий оставшиеся элементы этого потока после отбрасывания первых n элементов потока. Если этот поток содержит меньше n элементов, будет возвращён пустой поток.

Это состоятельное промежуточное действие.

Примечание API:
Хотя skip() обычно является недорогим действием в последовательных потоковых цепочках, оно может быть довольно затратным в упорядоченных параллельных потоках, особенно для больших значений n, так как skip(n) ограничен пропуском не просто любых n элементов, а первых n элементов в порядке их встреч. Использование потока-источника без порядка (такого как generate(IntSupplier)) или удаление ограничения упорядоченности с помощью BaseStream.unordered() может привести к значительному ускорению skip() в параллельных потоках, если это разрешено семантикой вашей ситуации. Если требуется согласованность с порядком встреч, и вы испытываете плохую производительность или использование памяти с skip() в параллельных потоках, переключение на последовательное выполнение с помощью BaseStream.sequential() может улучшить производительность.
Параметры:
n - количество ведущих элементов для пропуска
Возвращает:
новый поток
Выбрасывает:
IllegalArgumentException - если n отрицательно

takeWhile

default IntStream takeWhile(IntPredicate predicate)
Возвращает, если этот поток упорядочен, поток, состоящий из самого длинного префикса элементов, взятых из этого потока, которые соответствуют заданному предикату. В противном случае, если этот поток неупорядочен, возвращает поток, состоящий из подмножества элементов, взятых из этого потока, которые соответствуют заданному предикату.

Если этот поток упорядочен, то самый длинный префикс — это непрерывная последовательность элементов этого потока, которые соответствуют заданному предикату. Первый элемент последовательности — это первый элемент этого потока, а элемент, непосредственно следующий за последним элементом последовательности, не соответствует заданному предикату.

Если этот поток неупорядочен, и некоторые (но не все) элементы этого потока соответствуют заданному предикату, то поведение этой операции является неопределённым; она может взять любое подмножество соответствующих элементов (включая пустое множество).

Независимо от того, упорядочен ли этот поток или нет, если все элементы этого потока соответствуют заданному предикату, то эта операция берёт все элементы (результат такой же, как и входной), или если ни один элемент потока не соответствует заданному предикату, то ни один элемент не берется (результат — пустой поток).

Это короткозамыкающееся состоятельное промежуточное действие.

Примечание API:
Хотя takeWhile() обычно является недорогим действием в последовательных потоковых цепочках, оно может быть довольно затратным в упорядоченных параллельных потоках, так как операция ограничена возвратом не только любого допустимого префикса, но и самого длинного префикса элементов в порядке их встреч. Использование потока-источника без порядка (такого как generate(IntSupplier)) или удаление ограничения упорядоченности с помощью BaseStream.unordered() может привести к значительному ускорению takeWhile() в параллельных потоках, если это разрешено семантикой вашей ситуации. Если требуется согласованность с порядком встреч, и вы испытываете плохую производительность или использование памяти с takeWhile() в параллельных потоках, переключение на последовательное выполнение с помощью BaseStream.sequential() может улучшить производительность.
Требования к реализации:
Стандартная реализация получает spliterator этого потока, оборачивает этот разделитель, чтобы поддержать семантику этой операции при обходе, и возвращает новый поток, связанный с обернутым разделителем. Возвращаемый поток сохраняет характеристики выполнения этого потока (а именно, параллельное или последовательное выполнение согласно BaseStream.isParallel()), но обернутый разделитель может выбрать не поддерживать разделение. При закрытии возвращаемого потока вызываются обработчики закрытия как для возвращаемого, так и для этого потока.
Параметры:
predicate - невоздействующий, бессостоятельный предикат для применения к элементам для определения самого длинного префикса элементов.
Возвращает:
новый поток
С:
9

dropWhile

default IntStream dropWhile(IntPredicate predicate)
Возвращает, если этот поток упорядочен, поток, содержащий оставшиеся элементы этого потока после отбрасывания самого длинного префикса элементов, которые соответствуют заданному предикату. В противном случае, если этот поток неупорядочен, возвращает поток, содержащий оставшиеся элементы этого потока после отбрасывания подмножества элементов, которые соответствуют заданному предикату.

Если этот поток упорядочен, то самый длинный префикс — это непрерывная последовательность элементов этого потока, которые соответствуют заданному предикату. Первый элемент последовательности — это первый элемент этого потока, а элемент, непосредственно следующий за последним элементом последовательности, не соответствует заданному предикату.

Если этот поток неупорядочен, и некоторые (но не все) элементы этого потока соответствуют заданному предикату, то поведение этой операции является неопределённым; она может отбросить любое подмножество соответствующих элементов (включая пустое множество).

Независимо от того, упорядочен ли этот поток или нет, если все элементы этого потока соответствуют заданному предикату, то эта операция отбрасывает все элементы (результат — пустой поток), или если ни один элемент потока не соответствует заданному предикату, то не происходит отбрасывания элементов (результат такой же, как и входной).

Это состоятельное промежуточное действие.

Примечание API:
Хотя dropWhile() обычно является недорогим действием в последовательных потоковых цепочках, оно может быть довольно затратным в упорядоченных параллельных потоках, так как операция ограничена возвратом не только любого допустимого префикса, но и самого длинного префикса элементов в порядке их встреч. Использование потока-источника без порядка (такого как generate(IntSupplier)) или удаление ограничения упорядоченности с помощью BaseStream.unordered() может привести к значительному ускорению dropWhile() в параллельных потоках, если это разрешено семантикой вашей ситуации. Если требуется согласованность с порядком встреч, и вы испытываете плохую производительность или использование памяти с dropWhile() в параллельных потоках, переключение на последовательное выполнение с помощью BaseStream.sequential() может улучшить производительность.
Требования к реализации:
Стандартная реализация получает spliterator этого потока, оборачивает этот разделитель, чтобы поддержать семантику этой операции при обходе, и возвращает новый поток, связанный с обернутым разделителем. Возвращаемый поток сохраняет характеристики выполнения этого потока (а именно, параллельное или последовательное выполнение согласно BaseStream.isParallel()), но обернутый разделитель может выбрать не поддерживать разделение. При закрытии возвращаемого потока вызываются обработчики закрытия как для возвращаемого, так и для этого потока.
Параметры:
predicate - невоздействующий, бессостоятельный предикат для применения к элементам для определения самого длинного префикса элементов.
Возвращает:
новый поток
С:
9

forEach

void forEach(IntConsumer action)
Выполняет действие для каждого элемента этого потока.

Это конечная операция.

Для параллельных потоковых цепочек эта операция не гарантирует соблюдение порядка встреч элементов в потоке, так как это бы нанесло ущерб преимуществу параллелизма. Для каждого элемента действие может быть выполнено в любое время и в любой потоке, которое библиотека выберет. Если действие обращается к общим данным, оно отвечает за обеспечение необходимой синхронизации.

Параметры:
action - невоздействующее действие, которое нужно выполнить над элементами

forEachOrdered

void forEachOrdered(IntConsumer action)
Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в порядке встреч для потоков, которые имеют определённый порядок встреч.

Это конечная операция.

Параметры:
action - невоздействующее действие, которое нужно выполнить над элементами
См. также:
  • forEach(IntConsumer)

toArray

int[] toArray()
Возвращает массив, содержащий элементы этого потока.

Это конечная операция.

Возвращает:
массив, содержащий элементы этого потока

reduce

int reduce(int identity, IntBinaryOperator op)
Выполняет сокращение элементов этого потока, используя предоставленное начальное значение и ассоциативную функцию накопления, и возвращает полученное значение. Это эквивалентно:

     int result = identity;
     for (int element : this stream)
         result = accumulator.applyAsInt(result, element)
     return result;
 
, но не ограничено последовательным выполнением.

Значение identity должно быть тождеством для функции накопления. Это означает, что для всех x, accumulator.apply(identity, x) равно x. Функция accumulator должна быть ассоциативной функцией.

Это терминальная операция.

API Note:
Сумма, минимум и максимум — это частные случаи сокращения, которые можно выразить с помощью этого метода. Например, суммирование потока можно выразить как:

     int sum = integers.reduce(0, (a, b) -> a+b);
 
или более компактно:

     int sum = integers.reduce(0, Integer::sum);
 

Хотя это может показаться более окольным способом выполнения агрегации по сравнению с простым изменением текущей суммы в цикле, операции сокращения более успешно распараллеливаются, без необходимости дополнительной синхронизации и с значительно меньшим риском гонок данных.

Параметры:
identity - начальное значение для функции накопления
op - ассоциативная, не влияющая на состояние, бессостоятельная функция для объединения двух значений
Возвращает:
результат сокращения
См. также:
  • sum()
  • min()
  • max()
  • average()

reduce

OptionalInt reduce(IntBinaryOperator op)
Выполняет сокращение элементов этого потока, используя ассоциативную функцию накопления, и возвращает описание полученного значения, если оно есть. Это эквивалентно:

     boolean foundAny = false;
     int result = null;
     for (int element : this stream) {
         if (!foundAny) {
             foundAny = true;
             result = element;
         }
         else
             result = accumulator.applyAsInt(result, element);
     }
     return foundAny ? OptionalInt.of(result) : OptionalInt.empty();
 
, но не ограничено последовательным выполнением.

Функция accumulator должна быть ассоциативной функцией.

Это терминальная операция.

Параметры:
op - ассоциативная, не влияющая на состояние, бессостоятельная функция для объединения двух значений
Возвращает:
результат сокращения
См. также:
  • reduce(int, IntBinaryOperator)

collect

<R> R collect(Supplier<R> supplier, ObjIntConsumer<R> accumulator, BiConsumer<R,R> combiner)
Выполняет операцию мутабельного сокращения над элементами этого потока. Мутабельное сокращение — это такое сокращение, в котором результатом сокращения является контейнер изменяемого результата, такой как ArrayList, и элементы включаются путем обновления состояния результата, а не путем замены результата. Это дает результат, эквивалентный:

     R result = supplier.get();
     for (int element : this stream)
         accumulator.accept(result, element);
     return result;
 

Как и reduce(int, IntBinaryOperator), операции collect могут быть распараллелены без необходимости дополнительной синхронизации.

Это терминальная операция.

Type Parameters:
R - тип контейнера изменяемого результата
Параметры:
supplier - функция, создающая новый контейнер изменяемого результата. Для параллельного выполнения эта функция может вызываться несколько раз и должна возвращать новое значение каждый раз.
accumulator - ассоциативная, не влияющая на состояние, бессостоятельная функция, которая должна складывать элемент в контейнер результата.
combiner - ассоциативная, не влияющая на состояние, бессостоятельная функция, которая принимает два частичных контейнера результата и объединяет их, которая должна быть совместима с функцией накопления. Функция комбинирования должна складывать элементы из второго контейнера результата в первый контейнер результата.
Возвращает:
результат сокращения
См. также:
  • Stream.collect(Supplier, BiConsumer, BiConsumer)

sum

int sum()
Возвращает сумму элементов в этом потоке. Это частный случай сокращения и эквивалентно:

     return reduce(0, Integer::sum);
 

Это терминальная операция.

Возвращает:
сумма элементов в этом потоке

min

OptionalInt min()
Возвращает описание минимального элемента этого потока или пустой OptionalInt , если этот поток пуст. Это частный случай сокращения и эквивалентно:

     return reduce(Integer::min);
 

Это терминальная операция.

Возвращает:
OptionalInt , содержащий минимальный элемент этого потока, или пустой OptionalInt , если поток пуст

max

OptionalInt max()
Возвращает OptionalInt , описывающую максимальный элемент этого потока, или пустой OptionalInt , если этот поток пуст. Это частный случай сокращения и эквивалентно:

     return reduce(Integer::max);
 

Это терминальная операция.

Возвращает:
OptionalInt , содержащий максимальный элемент этого потока, или пустой OptionalInt , если поток пуст

count

long count()
Возвращает количество элементов в этом потоке. Это частный случай сокращения и эквивалентно:

     return mapToLong(e -> 1L).sum();
 

Это терминальная операция.

API Note:
Реализация может выбрать не выполнить потоковую обработку (ни последовательно, ни параллельно), если она способна вычислить количество напрямую из источника потока. В таких случаях элементы источника не будут пройдены, и промежуточные операции не будут вычислены. Параметры поведения с побочными эффектами, которые настоятельно не рекомендуются, за исключением безобидных случаев, таких как отладка, могут быть затронуты. Рассмотрим, например, следующий поток:

     IntStream s = IntStream.of(1, 2, 3, 4);
     long count = s.peek(System.out::println).count();
 
Количество элементов, охватываемых источником потока, известно, и промежуточная операция peek не вводит или не удаляет элементы из потока (как может быть в случае с операциями flatMap или filter). Таким образом, количество равно 4, и нет необходимости выполнять обработку и в качестве побочного эффекта выводить элементы.
Возвращает:
количество элементов в этом потоке

average

OptionalDouble average()
Возвращает OptionalDouble , описывающую среднее арифметическое элементов этого потока, или пустой OptionalDouble , если этот поток пуст. Это частный случай сокращения.

Это терминальная операция.

Возвращает:
OptionalDouble , содержащий среднее арифметическое этого потока, или пустой OptionalDouble , если поток пуст

summaryStatistics

IntSummaryStatistics summaryStatistics()
Возвращает IntSummaryStatistics , описывающий различные сводные данные об элементах этого потока. Это частный случай сокращения.

Это терминальная операция.

Возвращает:
IntSummaryStatistics , описывающий различные сводные данные об элементах этого потока

anyMatch

boolean anyMatch(IntPredicate predicate)
Возвращает, соответствуют ли какие-либо элементы этого потока предоставленному предикату. Предикат может не быть применен ко всем элементам, если это не необходимо для определения результата. Если поток пустой, то возвращается false и предикат не вычисляется.

Это краткосрочная терминальная операция.

API Note:
Этот метод вычисляет экзистенциальное квантификатор предиката над элементами потока (для некоторого x P(x)).
Параметры:
predicate - не влияющий на состояние, бессостоятельный предикат, применяемый к элементам этого потока
Возвращает:
true , если какие-либо элементы потока соответствуют предоставленному предикату, в противном случае false

allMatch

boolean allMatch(IntPredicate predicate)
Возвращает значение, указывающее, соответствуют ли все элементы этого потока предоставленному предикату. Предикат может не оцениваться для всех элементов, если это не нужно для определения результата. Если поток пуст, то возвращается true и предикат не оценивается.

Это конечная операция короткого замыкания.

API Note:
Этот метод оценивает универсальную квантификацию предиката по элементам потока (для всех x P(x)). Если поток пуст, квантификация считается пусто удовлетворяемой и всегда true (независимо от P(x)).
Parameters:
predicate - невмешивающийся, бессостоятельный предикат для применения к элементам этого потока
Returns:
true если все элементы потока соответствуют предоставленному предикату или поток пуст, в противном случае false

noneMatch

boolean noneMatch(IntPredicate predicate)
Возвращает значение, указывающее, не соответствуют ли ни один элемент этого потока предоставленному предикату. Предикат может не оцениваться для всех элементов, если это не нужно для определения результата. Если поток пуст, то возвращается true и предикат не оценивается.

Это конечная операция короткого замыкания.

API Note:
Этот метод оценивает универсальную квантификацию отрицаемого предиката по элементам потока (для всех x ~P(x)). Если поток пуст, квантификация считается пусто удовлетворяемой и всегда true, независимо от P(x).
Parameters:
predicate - невмешивающийся, бессостоятельный предикат для применения к элементам этого потока
Returns:
true если ни один элемент потока не соответствует предоставленному предикату или поток пуст, в противном случае false

findFirst

OptionalInt findFirst()
Возвращает OptionalInt, описывающий первый элемент этого потока, или пустой OptionalInt если поток пуст. Если у потока нет порядка обработки, то может быть возвращён любой элемент.

Это конечная операция короткого замыкания.

Returns:
OptionalInt описывающий первый элемент этого потока, или пустой OptionalInt если поток пуст

findAny

OptionalInt findAny()
Возвращает OptionalInt, описывающий какой-либо элемент потока, или пустой OptionalInt если поток пуст.

Это конечная операция короткого замыкания.

Поведение этой операции явно недетерминировано; она свободна выбирать любой элемент в потоке. Это позволяет обеспечить максимальную производительность в параллельных операциях; недостаток заключается в том, что несколько вызовов для одного и того же источника могут не возвращать один и тот же результат. (Если желается стабильный результат, используйте findFirst() вместо этого.)

Returns:
OptionalInt описывающий какой-либо элемент этого потока, или пустой OptionalInt если поток пуст
See Also:
  • findFirst()

asLongStream

LongStream asLongStream()
Возвращает LongStream содержащий элементы этого потока, преобразованные в long.

Это промежуточная операция.

Returns:
LongStream содержащий элементы этого потока, преобразованные в long

asDoubleStream

DoubleStream asDoubleStream()
Возвращает DoubleStream содержащий элементы этого потока, преобразованные в double.

Это промежуточная операция.

Returns:
DoubleStream содержащий элементы этого потока, преобразованные в double

boxed

Stream<Integer> boxed()
Возвращает Stream содержащий элементы этого потока, каждый из которых упакован в Integer.

Это промежуточная операция.

Returns:
Stream содержащий элементы этого потока, каждый из которых упакован в Integer

builder

static IntStream.Builder builder()
Возвращает конструктор для IntStream.
Returns:
построитель потока

empty

static IntStream empty()
Возвращает пустой последовательный IntStream.
Returns:
пустой последовательный поток

of

static IntStream of(int t)
Возвращает последовательный IntStream, содержащий один элемент.
Parameters:
t - единственный элемент
Returns:
последовательный поток с одним элементом

of

static IntStream of(int... values)
Возвращает упорядоченный последовательный поток, элементами которого являются указанные значения.
Parameters:
values - элементы нового потока
Returns:
новый поток

iterate

static IntStream iterate(int seed, IntUnaryOperator f)
Возвращает бесконечный упорядоченный последовательный IntStream, полученный путём итеративного применения функции f к начальному элементу seed, создавая Stream, состоящий из seed, f(seed), f(f(seed)), и т. д.

Первый элемент (позиция 0) в IntStream будет предоставленным seed. Для n > 0, элемент на позиции n, будет результатом применения функции f к элементу на позиции n - 1.

Действие применения f для одного элемента происходит до действия применения f для последующих элементов. Для каждого элемента действие может быть выполнено в любом потоке, выбранном библиотекой.

Parameters:
seed - начальный элемент
f - функция, применяемая к предыдущему элементу для получения нового элемента
Returns:
новый последовательный IntStream

iterate

static IntStream iterate(int seed, IntPredicate hasNext, IntUnaryOperator next)
Возвращает упорядоченный последовательный IntStream, полученный путём итеративного применения заданной функции next к начальному элементу при условии удовлетворения заданному предикату hasNext. Поток завершается, как только предикат hasNext возвращает false.

IntStream.iterate должен генерировать ту же последовательность элементов, что и соответствующий цикл for:


     for (int index=seed; hasNext.test(index); index = next.applyAsInt(index)) {
         ...
     }
 

Полученная последовательность может быть пустой, если предикат hasNext не выполняется для начального значения. В противном случае, первый элемент будет предоставленным seed значением, следующий элемент (если он есть) будет результатом применения функции next к значению seed, и так далее итеративно, пока предикат hasNext не укажет на необходимость завершения потока.

Действие применения предиката hasNext к элементу происходит до действия применения функции next к этому элементу. Действие применения функции next для одного элемента происходит до действия применения предиката hasNext для последующих элементов. Для любого элемента действие может быть выполнено в любом потоке, выбранном библиотекой.

Parameters:
seed - начальный элемент
hasNext - предикат, применяемый к элементам для определения момента завершения потока.
next - функция, применяемая к предыдущему элементу для получения нового элемента
Returns:
новый последовательный IntStream
Since:
9

generate

static IntStream generate(IntSupplier s)
Возвращает бесконечный неупорядоченный последовательный поток, где каждый элемент генерируется предоставленным IntSupplier. Это подходит для генерации постоянных потоков, потоков случайных элементов и т. д.
Parameters:
s - IntSupplier для генерируемых элементов
Returns:
новый бесконечный неупорядоченный последовательный IntStream

range

static IntStream range(int startInclusive, int endExclusive)
Возвращает упорядоченный последовательный IntStream от startInclusive (включительно) до endExclusive (исключительно) с шагом инкремента 1.
API Note:

Эквивалентная последовательность возрастающих значений может быть получена последовательно с использованием цикла for следующим образом:


     for (int i = startInclusive; i < endExclusive ; i++) { ... }
 
Parameters:
startInclusive - (включительно) начальное значение
endExclusive - исключительная верхняя граница
Returns:
последовательный IntStream для диапазона int элементов

rangeClosed

static IntStream rangeClosed(int startInclusive, int endInclusive)
Возвращает упорядоченную последовательность элементов от startInclusive (включительно) до endInclusive (включительно) с шагом 1.
Примечание API:

Эквивалентную последовательность возрастающих значений можно получить последовательно с помощью цикла for следующим образом:


     for (int i = startInclusive; i <= endInclusive ; i++) { ... }
 
Параметры:
startInclusive - начальное значение (включительно)
endInclusive - верхняя граница (включительно)
Возвращает:
упорядоченную последовательность элементов для указанного диапазона int

concat

static IntStream concat(IntStream a, IntStream b)
Создаёт ленивую объединённую последовательность, элементы которой представляют собой все элементы первой последовательности, за которыми следуют все элементы второй последовательности. Результирующая последовательность упорядочена, если обе входные последовательности упорядочены, и параллельна, если хотя бы одна из входных последовательностей параллельна. При закрытии результирующей последовательности вызываются обработчики закрытия для обеих входных последовательностей.

Этот метод обрабатывает две входные последовательности и связывает каждую последовательность с её источником. В результате последующие изменения источника входной последовательности могут не отражаться в результирующей объединённой последовательности.

Примeчание API:
Для сохранения возможностей оптимизации этот метод связывает каждую последовательность с её источником и принимает только две последовательности в качестве параметров. Например, точный размер источника объединённой последовательности может быть вычислен, если точный размер источника каждой входной последовательности известен. Чтобы объединить более последовательностей без привязки или без вложенных вызовов этого метода, попробуйте создать последовательность последовательностей и выполнить плоское отображение с помощью функции identity, например:

     IntStream concat = Stream.of(s1, s2, s3, s4).flatMapToInt(s -> s);
 
Примeчание реализации:
Следует проявлять осторожность при построении последовательностей из повторяющихся объединений. Доступ к элементу глубоко объединённой последовательности может привести к глубоким цепочкам вызовов или даже к StackOverflowError.
Параметры:
a - первая последовательность
b - вторая последовательность
Возвращает:
объединение двух входных последовательностей

© 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/IntStream.html

Spec-Zone.ru

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