Spec-Zone.ru › OpenJDK 21

Интерфейс LongStream

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

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


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

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

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

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

Модификатор и тип Метод Описание
boolean allMatch(LongPredicate predicate)
Возвращает, соответствуют ли все элементы этого потока предоставленному предикату.
boolean anyMatch(LongPredicate predicate)
Возвращает, соответствуют ли какие-либо элементы этого потока предоставленному предикату.
DoubleStream asDoubleStream()
Возвращает DoubleStream, состоящий из элементов этого потока, преобразованных в double.
OptionalDouble average()
Возвращает OptionalDouble, описывающий среднее арифметическое элементов этого потока, или пустой необязательный элемент, если этот поток пуст.
Stream<Long> boxed()
Возвращает Stream, состоящий из элементов этого потока, каждый из которых упакован в Long.
static LongStream.Builder builder()
Возвращает билдер для LongStream.
<R> R collect(Supplier<R> supplier, ObjLongConsumer<R> accumulator, BiConsumer<R,R> combiner)
Выполняет операцию мутабельного сокращения над элементами этого потока.
static LongStream concat(LongStream a, LongStream b)
Создает лениво конкатенированный поток, чьи элементы — все элементы первого потока, за которыми следуют все элементы второго потока.
long count()
Возвращает количество элементов в этом потоке.
LongStream distinct()
Возвращает поток, состоящий из уникальных элементов этого потока.
default LongStream dropWhile(LongPredicate predicate)
Если этот поток упорядочен, возвращает поток, состоящий из оставшихся элементов этого потока после удаления самой длинной префиксной последовательности элементов, которые соответствуют заданному предикату.
static LongStream empty()
Возвращает пустой последовательный LongStream.
LongStream filter(LongPredicate predicate)
Возвращает поток, состоящий из элементов этого потока, которые соответствуют заданному предикату.
OptionalLong findAny()
Возвращает OptionalLong, описывающий некоторый элемент потока, или пустой OptionalLong если поток пуст.
OptionalLong findFirst()
Возвращает OptionalLong, описывающий первый элемент этого потока, или пустой OptionalLong если поток пуст.
LongStream flatMap(LongFunction<? extends LongStream> mapper)
Возвращает поток, содержащий результаты замены каждого элемента этого потока содержимым отображенного потока, созданного с помощью предоставленной функции отображения для каждого элемента.
void forEach(LongConsumer action)
Выполняет действие для каждого элемента этого потока.
void forEachOrdered(LongConsumer action)
Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в порядке встречи для потоков, имеющих определённый порядок встречи.
static LongStream generate(LongSupplier s)
Возвращает бесконечный последовательный неупорядоченный поток, где каждый элемент генерируется предоставленной LongSupplier.
static LongStream iterate(long seed, LongPredicate hasNext, LongUnaryOperator next)
Возвращает последовательный упорядоченный LongStream, полученный итерационным применением заданной next функции к начальному элементу, при условии удовлетворения заданного hasNext предиката.
static LongStream iterate(long seed, LongUnaryOperator f)
Возвращает бесконечный последовательный упорядоченный LongStream, полученный итерационным применением функции f к начальному элементу seed, создавая Stream, состоящий из seed, f(seed), f(f(seed)), и т. д.
LongStream limit(long maxSize)
Возвращает поток, содержащий элементы этого потока, укороченные до длины не более maxSize.
LongStream map(LongUnaryOperator mapper)
Возвращает поток, содержащий результаты применения заданной функции к элементам этого потока.
default LongStream mapMulti(LongStream.LongMapMultiConsumer mapper)
Возвращает поток, содержащий результаты замены каждого элемента этого потока множественными элементами, то есть нулём или более элементами.
DoubleStream mapToDouble(LongToDoubleFunction mapper)
Возвращает DoubleStream, содержащий результаты применения заданной функции к элементам этого потока.
IntStream mapToInt(LongToIntFunction mapper)
Возвращает IntStream, содержащий результаты применения заданной функции к элементам этого потока.
<U> Stream<U> mapToObj(LongFunction<? extends U> mapper)
Возвращает Stream со значениями типа объект, содержащий результаты применения заданной функции к элементам этого потока.
OptionalLong max()
Возвращает OptionalLong, описывающий максимальный элемент этого потока, или пустой необязательный элемент, если этот поток пуст.
OptionalLong min()
Возвращает OptionalLong описывающий минимальный элемент этого потока, или пустой необязательный элемент, если этот поток пуст.
boolean noneMatch(LongPredicate predicate)
Возвращает значение true, если ни один элемент этого потока не соответствует предоставленному предикату.
static LongStream of(long t)
Возвращает последовательный LongStream, содержащий один элемент.
static LongStream of(long... values)
Возвращает последовательный упорядоченный поток, чьи элементы — заданные значения.
LongStream peek(LongConsumer action)
Возвращает поток, содержащий элементы этого потока, дополнительно выполняющий предоставленное действие над каждым элементом по мере потребления элементов из результирующего потока.
static LongStream range(long startInclusive, long endExclusive)
Возвращает последовательный упорядоченный LongStream от startInclusive (включительно) до endExclusive (исключительно) с приращением 1.
static LongStream rangeClosed(long startInclusive, long endInclusive)
Возвращает последовательный упорядоченный LongStream от startInclusive (включительно) до endInclusive (включительно) с приращением 1.
long reduce(long identity, LongBinaryOperator op)
Выполняет операцию сокращения над элементами этого потока, используя предоставленное значение идентичности и ассоциативную функцию накопления и возвращает результирующее значение.
OptionalLong reduce(LongBinaryOperator op)
Выполняет операцию сокращения над элементами этого потока, используя ассоциативную функцию накопления и возвращает OptionalLong описывающее результирующее значение, если таковое имеется.
LongStream skip(long n)
Возвращает поток, состоящий из оставшихся элементов этого потока после удаления первых n элементов потока.
LongStream sorted()
Возвращает поток, состоящий из элементов этого потока в отсортированном порядке.
long sum()
Возвращает сумму элементов в этом потоке.
LongSummaryStatistics summaryStatistics()
Возвращает LongSummaryStatistics описывающий различные сводные данные об элементах этого потока.
default LongStream takeWhile(LongPredicate predicate)
Если этот поток упорядочен, возвращает поток, состоящий из самой длинной префиксной последовательности элементов, взятых из этого потока, которые соответствуют заданному предикату.
long[] toArray()
Возвращает массив, содержащий элементы этого потока.

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

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

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

filter

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

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

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

map

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

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

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

mapToObj

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

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

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

mapToInt

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

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

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

mapToDouble

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

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

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

flatMap

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

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

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

mapMulti

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

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

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

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

distinct

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

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

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

sorted

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

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

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

peek

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

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

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

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

     LongStream.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

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

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

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

skip

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

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

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

takeWhile

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

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

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

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

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

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

dropWhile

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

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

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

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

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

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

forEach

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

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

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

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

forEachOrdered

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

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

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

toArray

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

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

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

reduce

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

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

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

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

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

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

     long sum = integers.reduce(0, Long::sum);
 

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

Parameters:
identity - начальное значение для функции накопления
op - ассоциативная, не влияющая на состояние, бессостоятельная функция для объединения двух значений
Returns:
результат сведения
See Also:
  • sum()
  • min()
  • max()
  • average()

reduce

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

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

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

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

Parameters:
op - ассоциативная, не влияющая на состояние, бессостоятельная функция для объединения двух значений
Returns:
результат сведения
See Also:
  • reduce(long, LongBinaryOperator)

collect

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

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

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

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

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

sum

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

     return reduce(0, Long::sum);
 

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

Returns:
сумма элементов в этом потоке

min

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

     return reduce(Long::min);
 

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

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

max

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

     return reduce(Long::max);
 

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

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

count

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

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

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

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

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

average

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

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

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

summaryStatistics

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

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

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

anyMatch

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

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

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

allMatch

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

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

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

noneMatch

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

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

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

findFirst

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

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

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

findAny

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

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

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

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

asDoubleStream

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

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

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

boxed

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

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

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

builder

static LongStream.Builder builder()
Возвращает билдер для LongStream.
Returns:
билдер потока

empty

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

of

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

of

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

iterate

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

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

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

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

iterate

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

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


     for (long index=seed; hasNext.test(index); index = next.applyAsLong(index)) {
         ...
     }
 

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

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

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

generate

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

range

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

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


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

ДиапазонЗакрытый

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

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


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

конкатенация

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

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

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

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

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/stream/LongStream.html

Spec-Zone.ru

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