Spec-Zone.ru › OpenJDK 17

Интерфейс 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)
Возвращает значение, указывающее, не соответствует ли ни один элемент этого потока предоставленному предикату.
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 для этого потока, передавая функцию, которая действует следующим образом. Сначала она вызывает функцию отображения с LongConsumer , которая накапливает элементы замены в новый внутренний буфер. Когда функция отображения возвращается, она создаёт LongStream из внутреннего буфера. Наконец, она возвращает этот поток в flatMap.
Параметры:
mapper - функция, являющаяся невмешивающейся и бессостоятельной, которая генерирует элементы замены
Возвращает:
новый поток
С тех пор:
16
См. также:
  • Stream.mapMulti

distinct

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

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

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

sorted

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

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

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

peek

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

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

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

Примечание 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:
Суммирование, минимум, максимум и среднее значение — это частные случаи сведения. Суммирование потока чисел может быть выражено как:

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

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

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

Параметры:
identity - тождественное значение для функции накопления
op - ассоциативная, не вносящая помех, бессостоятельная функция для объединения двух значений
Возвращает:
результат сведения
См. также:
  • 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 должна быть ассоциативной.

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

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

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

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

sum

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

     return reduce(0, Long::sum);
 

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

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

min

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

     return reduce(Long::min);
 

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

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

max

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

     return reduce(Long::max);
 

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

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

count

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

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

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

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

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

average

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

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

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

summaryStatistics

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

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

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

anyMatch

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

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

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

allMatch

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

Это короткое конечное действие.

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

noneMatch

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

Это короткое конечное действие.

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

findFirst

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

Это короткое конечное действие.

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

findAny

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

Это короткое конечное действие.

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

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

asDoubleStream

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

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

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

boxed

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

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

Returns:
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 элементов

rangeClosed

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

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


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

concat

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

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

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

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

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

Spec-Zone.ru

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