Spec-Zone.ru › OpenJDK 24

Интерфейс 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, и не возвращающую результат.

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

Модификатор и тип Метод Описание
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 - функция, которая не влияет на состояние, и не зависит от состояния, применяется к каждому элементу, которая генерирует поток новых значений
Возвращает:
новый поток
См. также:
  • 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:
Сумма, минимум и максимум — это частные случаи сведения, которые можно выразить с помощью этого метода. Например, суммирование потока можно выразить как:

     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 можно параллелизовать без дополнительной синхронизации.

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

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

sum

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

     return reduce(0, Integer::sum);
 

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

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

min

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

     return reduce(Integer::min);
 

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

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

max

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

     return reduce(Integer::max);
 

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

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

count

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

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

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

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

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

average

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

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

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

summaryStatistics

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

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

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

anyMatch

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

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

Примечание API:
Этот метод оценивает существование квантификации предиката по элементам потока (для некоторого 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:

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


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

rangeClosed

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

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


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

concat

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

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

Примечание API:
Для сохранения возможностей оптимизации этот метод связывает каждый поток с его источником и принимает только два потока в качестве параметров. Например, точный размер источника конкатенированного потока может быть вычислен, если известен точный размер источника каждого входного потока. Для конкатенации большего количества потоков без привязки или без вложенных вызовов этого метода попробуйте создать поток потоков и выполнить flat-mapping с функцией тождества, например:

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

© 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/stream/IntStream.html

Spec-Zone.ru

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