Spec-Zone.ru › OpenJDK 27

Интерфейс IntStream

Все суперинтерфейсы:
AutoCloseable, BaseStream<Integer, IntStream>
public interface IntStream extends BaseStream<Integer, IntStream>
Последовательность элементов примитивного типа int, поддерживающая последовательные и параллельные агрегатные операции. Это 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)
Возвращает true, если все элементы этого потока удовлетворяют заданному предикату.
boolean anyMatch(IntPredicate predicate)
Возвращает true, если хотя бы один элемент этого потока удовлетворяет заданному предикату.
DoubleStream asDoubleStream()
Возвращает DoubleStream, состоящий из элементов этого потока, преобразованных в double.
LongStream asLongStream()
Возвращает LongStream, состоящий из элементов этого потока, преобразованных в long.
OptionalDouble average()
Возвращает OptionalDouble со средним арифметическим элементов этого потока или пустой объект Optional, если поток пуст.
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 с максимальным элементом этого потока или пустой объект Optional, если поток пуст.
OptionalInt min()
Возвращает OptionalInt с минимальным элементом этого потока или пустой объект Optional, если поток пуст.
boolean noneMatch(IntPredicate predicate)
Возвращает true, если ни один элемент этого потока не удовлетворяет заданному предикату.
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()
Возвращает массив, содержащий элементы этого потока.

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

close, isParallel, iterator, onClose, parallel, sequential, spliterator, unordered
Модификатор и тип Метод Описание
void close()
Закрывает этот поток, вызывая все обработчики закрытия для конвейера этого потока.
boolean isParallel()
Возвращает true, если при выполнении терминальной операции этот поток будет обрабатываться параллельно.
Iterator<Integer> iterator()
Возвращает итератор элементов этого потока.
IntStream onClose(Runnable closeHandler)
Возвращает эквивалентный поток с дополнительным обработчиком закрытия.
IntStream parallel()
Возвращает эквивалентный параллельный поток.
IntStream sequential()
Возвращает эквивалентный последовательный поток.
Spliterator<Integer> spliterator()
Возвращает сплитератор элементов этого потока.
IntStream 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:
Сумма, минимум и максимум — частные случаи свертки, которые можно выразить с помощью этого метода. Например, суммирование потока можно выразить так:
    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)
Выполняет свертку элементов этого потока, используя ассоциативную функцию накопления, и возвращает OptionalInt, описывающий результат свертки, если он существует. Это эквивалентно:
    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()
Возвращает OptionalInt, описывающий минимальный элемент этого потока, или пустой объект Optional, если поток пуст. Это частный случай свертки, эквивалентный:
    return reduce(Integer::min);

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

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

max

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

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

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

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()
Возвращает OptionalDouble, описывающий среднее арифметическое элементов этого потока, или пустой объект Optional, если поток пуст. Это частный случай свертки.

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

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

summaryStatistics

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

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

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

anyMatch

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

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

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

allMatch

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

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

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

noneMatch

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

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

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

findFirst

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

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

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

findAny

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

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

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

Возвращает:
OptionalInt, описывающий некоторый элемент этого потока, или пустой OptionalInt, если поток пуст
См. также:
  • findFirst()

asLongStream

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

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

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

asDoubleStream

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

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

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

boxed

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

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

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

builder

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

empty

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

of

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

of

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

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 для следующих элементов. Для любого заданного элемента действие может выполняться в любом потоке по выбору библиотеки.

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

Параметры:
seed — начальный элемент
hasNext — предикат, применяемый к элементам для определения момента завершения потока
next — функция, применяемая к предыдущему элементу для создания нового
Возвращает:
новый последовательный IntStream
Начиная с версии:
9

generate

static IntStream generate(IntSupplier s)
Возвращает бесконечный неупорядоченный последовательный поток, в котором каждый элемент генерируется заданным IntSupplier. Подходит для создания потоков с постоянными значениями, потоков случайных элементов и т. д.
Параметры:
s — IntSupplier для генерируемых элементов
Возвращает:
новый бесконечный неупорядоченный последовательный 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:
Для сохранения возможностей оптимизации этот метод связывает каждый поток с его источником и принимает только два потока в качестве параметров. Например, точный размер источника объединённого потока можно вычислить, если известен точный размер источника каждого входного потока. Чтобы объединить больше потоков без связывания или без вложенных вызовов этого метода, попробуйте создать поток потоков и выполнить отображение с разворачиванием, используя тождественную функцию, например:
    IntStream concat = Stream.of(s1, s2, s3, s4).flatMapToInt(s -> s);
Примечание по реализации:
Будьте осторожны при создании потоков путём многократного объединения. Доступ к элементу глубоко вложенного объединённого потока может привести к глубоким цепочкам вызовов или даже к StackOverflowError.
Параметры:
a — первый поток
b — второй поток
Возвращает:
объединение двух входных потоков

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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