Интерфейс LongStream
- Все суперинтерфейсы:
-
AutoCloseable,BaseStream<Long,LongStream>
public interface LongStream extends BaseStream<Long,LongStream>
Stream. Следующий пример иллюстрирует агрегатную операцию с использованием Stream и LongStream, вычисляя сумму весов красных виджетов:
long sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToLong(w -> w.getWeight())
.sum();
См. документацию класса для Stream и документацию пакета для java.util.stream для дополнительной спецификации потоков, операций с потоками, конвейеров потоков и параллелизма.- С:
- 1.8
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
LongStream.Builder |
Изменяемый билдер для LongStream. |
static interface |
LongStream.LongMapMultiConsumer |
Представляет операцию, принимающую аргумент типа long и LongConsumer, и не возвращающую результат. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
allMatch |
Возвращает, соответствуют ли все элементы этого потока предоставленному предикату. |
boolean |
anyMatch |
Возвращает, соответствуют ли какие-либо элементы этого потока предоставленному предикату. |
DoubleStream |
asDoubleStream() |
Возвращает DoubleStream, состоящий из элементов этого потока, преобразованных в double. |
OptionalDouble |
average() |
Возвращает OptionalDouble, описывающий среднее арифметическое элементов этого потока, или пустой необязательный элемент, если этот поток пуст. |
Stream |
boxed() |
Возвращает Stream, состоящий из элементов этого потока, каждый из которых упакован в Long. |
static LongStream.Builder |
builder() |
Возвращает билдер для LongStream. |
<R> R |
collect |
Выполняет операцию мутабельного сокращения над элементами этого потока. |
static LongStream |
concat |
Создает лениво конкатенированный поток, чьи элементы — все элементы первого потока, за которыми следуют все элементы второго потока. |
long |
count() |
Возвращает количество элементов в этом потоке. |
LongStream |
distinct() |
Возвращает поток, состоящий из уникальных элементов этого потока. |
default LongStream |
dropWhile |
Если этот поток упорядочен, возвращает поток, состоящий из оставшихся элементов этого потока после удаления самой длинной префиксной последовательности элементов, которые соответствуют заданному предикату. |
static LongStream |
empty() |
Возвращает пустой последовательный LongStream. |
LongStream |
filter |
Возвращает поток, состоящий из элементов этого потока, которые соответствуют заданному предикату. |
OptionalLong |
findAny() |
Возвращает OptionalLong, описывающий некоторый элемент потока, или пустой OptionalLong если поток пуст. |
OptionalLong |
findFirst() |
Возвращает OptionalLong, описывающий первый элемент этого потока, или пустой OptionalLong если поток пуст. |
LongStream |
flatMap |
Возвращает поток, содержащий результаты замены каждого элемента этого потока содержимым отображенного потока, созданного с помощью предоставленной функции отображения для каждого элемента. |
void |
forEach |
Выполняет действие для каждого элемента этого потока. |
void |
forEachOrdered |
Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в порядке встречи для потоков, имеющих определённый порядок встречи. |
static LongStream |
generate |
Возвращает бесконечный последовательный неупорядоченный поток, где каждый элемент генерируется предоставленной LongSupplier. |
static LongStream |
iterate |
Возвращает последовательный упорядоченный LongStream, полученный итерационным применением заданной next функции к начальному элементу, при условии удовлетворения заданного hasNext предиката. |
static LongStream |
iterate |
Возвращает бесконечный последовательный упорядоченный LongStream, полученный итерационным применением функции f к начальному элементу seed, создавая Stream, состоящий из seed, f(seed), f(f(seed)), и т. д. |
LongStream |
limit |
Возвращает поток, содержащий элементы этого потока, укороченные до длины не более maxSize. |
LongStream |
map |
Возвращает поток, содержащий результаты применения заданной функции к элементам этого потока. |
default LongStream |
mapMulti |
Возвращает поток, содержащий результаты замены каждого элемента этого потока множественными элементами, то есть нулём или более элементами. |
DoubleStream |
mapToDouble |
Возвращает DoubleStream, содержащий результаты применения заданной функции к элементам этого потока. |
IntStream |
mapToInt |
Возвращает IntStream, содержащий результаты применения заданной функции к элементам этого потока. |
<U> Stream |
mapToObj |
Возвращает Stream со значениями типа объект, содержащий результаты применения заданной функции к элементам этого потока. |
OptionalLong |
max() |
Возвращает OptionalLong, описывающий максимальный элемент этого потока, или пустой необязательный элемент, если этот поток пуст. |
OptionalLong |
min() |
Возвращает OptionalLong описывающий минимальный элемент этого потока, или пустой необязательный элемент, если этот поток пуст. |
boolean |
noneMatch |
Возвращает значение true, если ни один элемент этого потока не соответствует предоставленному предикату. |
static LongStream |
of |
Возвращает последовательный LongStream, содержащий один элемент. |
static LongStream |
of |
Возвращает последовательный упорядоченный поток, чьи элементы — заданные значения. |
LongStream |
peek |
Возвращает поток, содержащий элементы этого потока, дополнительно выполняющий предоставленное действие над каждым элементом по мере потребления элементов из результирующего потока. |
static LongStream |
range |
Возвращает последовательный упорядоченный LongStream от startInclusive (включительно) до endExclusive (исключительно) с приращением 1. |
static LongStream |
rangeClosed |
Возвращает последовательный упорядоченный LongStream от startInclusive (включительно) до endInclusive (включительно) с приращением 1. |
long |
reduce |
Выполняет операцию сокращения над элементами этого потока, используя предоставленное значение идентичности и ассоциативную функцию накопления и возвращает результирующее значение. |
OptionalLong |
reduce |
Выполняет операцию сокращения над элементами этого потока, используя ассоциативную функцию накопления и возвращает OptionalLong описывающее результирующее значение, если таковое имеется. |
LongStream |
skip |
Возвращает поток, состоящий из оставшихся элементов этого потока после удаления первых n элементов потока. |
LongStream |
sorted() |
Возвращает поток, состоящий из элементов этого потока в отсортированном порядке. |
long |
sum() |
Возвращает сумму элементов в этом потоке. |
LongSummaryStatistics |
summaryStatistics() |
Возвращает LongSummaryStatistics описывающий различные сводные данные об элементах этого потока. |
default LongStream |
takeWhile |
Если этот поток упорядочен, возвращает поток, состоящий из самой длинной префиксной последовательности элементов, взятых из этого потока, которые соответствуют заданному предикату. |
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новых значений - Возвращает:
- новый поток
- См. также:
mapMulti
default LongStream mapMulti(LongStream.LongMapMultiConsumer mapper)
Если аргумент потребителя используется за пределами области его применения к функции отображения, результаты не определены.
- Требования к реализации:
- Стандартная реализация вызывает
flatMapдля этого потока, передавая функцию, которая ведет себя следующим образом. Во-первых, она вызывает функцию отображения с потребителем, который накапливает элементы замены в новый внутренний буфер. Когда функция отображения возвращает значение, она создаетLongStreamиз внутреннего буфера. Наконец, она возвращает этот поток вflatMap. - Параметры:
-
mapper- не вмешивающаяся, бессостоятельная функция, которая генерирует элементы замены - Возвращает:
- новый поток
- С:
- 16
- См. также:
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- непрерывающий действие для выполнения над элементами - См. также:
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:
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:
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:
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:
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