Spec-Zone.ru › OpenJDK 17

Интерфейс 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 Note:
Хотя skip() обычно является недорогим процессом для последовательных потоков, он может быть довольно дорогим для упорядоченных параллельных потоков, особенно для больших значений n, так как skip(n) ограничен тем, что пропускает не просто любые n элементов, а именно первых n элементов в порядке встречи. Использование неупорядоченного источника потока (например, generate(IntSupplier)) или удаление ограничения упорядоченности с помощью BaseStream.unordered() может привести к значительному ускорению skip() в параллельных потоках, если семантика вашей ситуации это позволяет. Если требуется соответствие порядку встречи, и вы сталкиваетесь с низкой производительностью или использованием памяти с skip() в параллельных потоках, переключение на последовательное выполнение с помощью BaseStream.sequential() может улучшить производительность.
Parameters:
n - количество ведущих элементов для пропуска
Returns:
новый поток
Throws:
IllegalArgumentException - если n отрицательно

takeWhile

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

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

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

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

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

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

dropWhile

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

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

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

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

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

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

forEach

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

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

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

Parameters:
action - невмешивающееся действие, выполняемое над элементами

forEachOrdered

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

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

Parameters:
action - невмешивающееся действие, выполняемое над элементами
See Also:
  • forEach(IntConsumer)

toArray

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

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

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

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, описывающую минимальный элемент этого потока, или пустой опциональный объект, если этот поток пустой. Это частный случай сведения и эквивалентно:

     return reduce(Integer::min);
 

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

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

max

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

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

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

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

summaryStatistics

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

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

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

anyMatch

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

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

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

allMatch

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

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

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

noneMatch

boolean noneMatch(IntPredicate predicate)
Возвращает значение true, если ни один элемент этого потока не соответствует предоставленному предикату. Предикат может не быть применён ко всем элементам, если это не является необходимым для определения результата. Если поток пуст, возвращается 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)
Возвращает последовательный упорядоченный IntStream от startInclusive (включительно) до endInclusive (включительно) с шагом нарастания 1.
API Note:

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


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

concat

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

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

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

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

© 1993, 2021, 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/17/docs/api/java.base/java/util/stream/IntStream.html

Spec-Zone.ru

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