Интерфейс DoubleStream
- Все суперинтерфейсы:
-
AutoCloseable,BaseStream<Double,DoubleStream>
public interface DoubleStream extends BaseStream<Double,DoubleStream>
Stream. Следующий пример демонстрирует агрегированную операцию с использованием Stream и DoubleStream, вычисляя сумму весов красных виджетов:
double sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToDouble(w -> w.getWeight())
.sum();
См. документацию класса Stream и документацию пакета java.util.stream для дополнительной спецификации потоков, операций с потоками, конвейеров потоков и параллелизма.- С момента:
- 1.8
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
DoubleStream.Builder |
Изменяемый билдер для DoubleStream. |
static interface |
DoubleStream.DoubleMapMultiConsumer |
Представляет операцию, которая принимает аргумент типа double и DoubleConsumer, и не возвращает результат. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
allMatch |
Возвращает значение, указывающее, соответствуют ли все элементы этого потока заданному предикату. |
boolean |
anyMatch |
Возвращает значение, указывающее, соответствует ли хотя бы один элемент этого потока заданному предикату. |
OptionalDouble |
average() |
Возвращает OptionalDouble, описывающее среднее арифметическое элементов этого потока, или пустой optional, если поток пустой. |
Stream |
boxed() |
Возвращает Stream, содержащий элементы этого потока, упакованные в Double. |
static DoubleStream.Builder |
builder() |
Возвращает билдер для DoubleStream. |
<R> R |
collect |
Выполняет операцию «изменяемого сокращения» над элементами этого потока. |
static DoubleStream |
concat |
Создаёт лениво конкатенированный поток, элементы которого — все элементы первого потока, за которыми следуют все элементы второго потока. |
long |
count() |
Возвращает количество элементов в этом потоке. |
DoubleStream |
distinct() |
Возвращает поток, содержащий только уникальные элементы этого потока. |
default DoubleStream |
dropWhile |
Возвращает, если этот поток упорядочен, поток, состоящий из оставшихся элементов этого потока после удаления самого длинного префикса элементов, которые соответствуют заданному предикату. |
static DoubleStream |
empty() |
Возвращает пустой последовательный DoubleStream. |
DoubleStream |
filter |
Возвращает поток, состоящий из элементов этого потока, которые соответствуют заданному предикату. |
OptionalDouble |
findAny() |
Возвращает OptionalDouble, описывающий какой-либо элемент потока, или пустой OptionalDouble если поток пустой. |
OptionalDouble |
findFirst() |
Возвращает OptionalDouble, описывающий первый элемент этого потока, или пустой OptionalDouble если поток пустой. |
DoubleStream |
flatMap |
Возвращает поток, содержащий результаты замены каждого элемента этого потока содержимым сопоставленного потока, созданного с помощью предоставленной функции отображения для каждого элемента. |
void |
forEach |
Выполняет действие для каждого элемента этого потока. |
void |
forEachOrdered |
Выполняет действие для каждого элемента этого потока, гарантируя, что каждый элемент обрабатывается в порядке встречи для потоков, у которых есть определённый порядок встречи. |
static DoubleStream |
generate |
Возвращает бесконечный последовательный неупорядоченный поток, где каждый элемент генерируется предоставленной DoubleSupplier. |
static DoubleStream |
iterate |
Возвращает упорядоченный последовательный DoubleStream, созданный итерационным применением данной next функции к начальному элементу, при условии удовлетворения заданного hasNext предиката. |
static DoubleStream |
iterate |
Возвращает бесконечный последовательный упорядоченный DoubleStream, полученный итеративным применением функции f к начальному элементу seed, производящий Stream, состоящий из seed, f(seed), f(f(seed)), и т.д. |
DoubleStream |
limit |
Возвращает поток, состоящий из элементов этого потока, укороченного до длины не более maxSize. |
DoubleStream |
map |
Возвращает поток, содержащий результаты применения данной функции к элементам этого потока. |
default DoubleStream |
mapMulti |
Возвращает поток, содержащий результаты замены каждого элемента этого потока несколькими элементами, то есть нулём или более элементами. |
IntStream |
mapToInt |
Возвращает IntStream, содержащий результаты применения данной функции к элементам этого потока. |
LongStream |
mapToLong |
Возвращает LongStream, содержащий результаты применения данной функции к элементам этого потока. |
<U> Stream |
mapToObj |
Возвращает Stream со значениями типа объект, содержащий результаты применения данной функции к элементам этого потока. |
OptionalDouble |
max() |
Возвращает OptionalDouble, описывающий максимальный элемент этого потока, или пустой OptionalDouble, если поток пустой. |
OptionalDouble |
min() |
Возвращает OptionalDouble, описывающий минимальный элемент этого потока, или пустой OptionalDouble, если поток пустой. |
boolean |
noneMatch |
Возвращает значение, указывающее, не соответствуют ли никакие элементы этого потока заданному предикату. |
static DoubleStream |
of |
Возвращает последовательный DoubleStream, содержащий единственный элемент. |
static DoubleStream |
of |
Возвращает упорядоченный последовательный поток, содержащий указанные значения. |
DoubleStream |
peek |
Возвращает поток, содержащий элементы этого потока, дополнительно выполняя указанное действие над каждым элементом по мере потребления элементов из результирующего потока. |
double |
reduce |
Выполняет операцию «сокращения» над элементами этого потока, используя предоставленное значение тождества и функцию аккумулирования, обладающую свойством ассоциативности, и возвращает значение результата. |
OptionalDouble |
reduce |
Выполняет операцию «сокращения» над элементами этого потока, используя функцию аккумулирования, обладающую свойством ассоциативности, и возвращает OptionalDouble, описывающее значение результата, если таковое имеется. |
DoubleStream |
skip |
Возвращает поток, содержащий оставшиеся элементы этого потока после отбрасывания первых n элементов потока. |
DoubleStream |
sorted() |
Возвращает поток, содержащий элементы этого потока в отсортированном порядке. |
double |
sum() |
Возвращает сумму элементов в этом потоке. |
DoubleSummaryStatistics |
summaryStatistics() |
Возвращает DoubleSummaryStatistics, описывающее различные сводные данные об элементах этого потока. |
default DoubleStream |
takeWhile |
Возвращает, если этот поток упорядочен, поток, содержащий самый длинный префикс элементов, взятых из этого потока, которые соответствуют заданному предикату. |
double[] |
toArray() |
Возвращает массив, содержащий элементы этого потока. |
Методы, объявленные в интерфейсе java.util.stream.BaseStream
close, isParallel, iterator, onClose, parallel, sequential, spliterator, unordered
Подробное описание методов
filter
DoubleStream filter(DoublePredicate predicate)
- Параметры:
-
predicate- предикат, применяемый к каждому элементу, чтобы определить, следует ли его включать; он не влияет на состояние и не зависит от состояния потока - Возвращает:
- новый поток
map
DoubleStream map(DoubleUnaryOperator mapper)
- Параметры:
-
mapper- функция, применяемая к каждому элементу; она не влияет на состояние и не зависит от состояния потока - Возвращает:
- новый поток
mapToObj
<U> Stream<U> mapToObj(DoubleFunction<? extends U> mapper)
Stream со значениями объектов, полученными в результате применения заданной функции к элементам этого потока.
- Параметры типа:
-
U- тип элемента нового потока - Параметры:
-
mapper- функция, применяемая к каждому элементу; она не влияет на состояние и не зависит от состояния потока - Возвращает:
- новый поток
mapToInt
IntStream mapToInt(DoubleToIntFunction mapper)
IntStream, состоящий из результатов применения заданной функции к элементам этого потока.
- Параметры:
-
mapper- функция, применяемая к каждому элементу; она не влияет на состояние и не зависит от состояния потока - Возвращает:
- новый поток
mapToLong
LongStream mapToLong(DoubleToLongFunction mapper)
LongStream, состоящий из результатов применения заданной функции к элементам этого потока.
- Параметры:
-
mapper- функция, применяемая к каждому элементу; она не влияет на состояние и не зависит от состояния потока - Возвращает:
- новый поток
flatMap
DoubleStream flatMap(DoubleFunction<? extends DoubleStream> mapper)
closed после того, как его содержимое было помещено в этот поток. (Если отображенный поток null используется пустой поток.)
- Параметры:
-
mapper- функция, применяемая к каждому элементу, которая генерируетDoubleStreamновых значений - Возвращает:
- новый поток
- См. также:
mapMulti
default DoubleStream mapMulti(DoubleStream.DoubleMapMultiConsumer mapper)
Если аргумент потребителя используется за пределами области его применения к функции отображения, результаты не определены.
- Требования к реализации:
- По умолчанию реализация вызывает
flatMapдля этого потока, передавая функцию, которая работает следующим образом. Во-первых, она вызывает функцию-отобразитель сDoubleConsumer, которая накапливает элементы замены в новый внутренний буфер. Когда функция-отобразитель возвращается, она создаетDoubleStreamиз внутреннего буфера. Наконец, она возвращает этот потокflatMap. - Параметры:
-
mapper- функция, не влияющая на состояние и не зависящая от состояния, генерирующая элементы замены - Возвращает:
- новый поток
- С:
- 16
- См. также:
distinct
DoubleStream distinct()
Double.compare(double, double).
- Возвращает:
- результирующий поток
sorted
DoubleStream sorted()
Double.compare(double, double).
- Возвращает:
- результирующий поток
peek
DoubleStream peek(DoubleConsumer action)
Для параллельных потоковых конвейеров действие может быть вызвано в любое время и в любом потоке, в котором элемент становится доступным от операции потока-предшественника. Если действие изменяет общие данные, оно отвечает за обеспечение необходимой синхронизации.
- Примечание API:
- Этот метод существует главным образом для поддержки отладки, где вы хотите увидеть элементы по мере их прохождения определенной точки в конвейере:
DoubleStream.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
DoubleStream limit(long maxSize)
maxSize.
- Примечание API:
- В то время как
limit()обычно является недорогой операцией в последовательных потоковых конвейерах, она может быть довольно дорогой в упорядоченных параллельных конвейерах, особенно для больших значенийmaxSize, так какlimit(n)ограничен возвращением не только любых n элементов, но и первых n элементов в порядке их появления. Использование неупорядоченного источника потока (такого какgenerate(DoubleSupplier)) или снятие ограничения на порядок сBaseStream.unordered()может привести к значительному ускорениюlimit()в параллельных конвейерах, если семантика вашей ситуации это позволяет. Если требуется соответствие порядку появления, и вы испытываете плохую производительность или использование памяти сlimit()в параллельных конвейерах, переключение на последовательное выполнение сBaseStream.sequential()может улучшить производительность. - Параметры:
-
maxSize- количество элементов, до которого должен быть ограничен поток - Возвращает:
- новый поток
- Исключения:
-
IllegalArgumentException- еслиmaxSizeотрицательное
skip
DoubleStream skip(long n)
n элементов потока. Если этот поток содержит меньше n элементов, то будет возвращен пустой поток.
- Примечание API:
- Хотя
skip()обычно является недорогим действием для последовательных потоков данных, он может быть довольно дорогим для упорядоченных параллельных потоков, особенно для больших значенийn, так какskip(n)ограничен пропусканием не просто любых n элементов, но первых n элементов в порядке их встречи. Использование неупорядоченного источника потока (такого какgenerate(DoubleSupplier)) или удаление ограничения упорядоченности с помощьюBaseStream.unordered()может привести к значительному ускорениюskip()в параллельных потоках, если семантика вашей ситуации это позволяет. Если необходима согласованность с порядком встречи, и вы сталкиваетесь с низкой производительностью или использованием памяти при использованииskip()в параллельных потоках, переход к последовательному выполнению с помощьюBaseStream.sequential()может улучшить производительность. - Параметры:
-
n- количество отбрасываемых ведущих элементов - Возвращает:
- новый поток
- Исключения:
-
IllegalArgumentException- еслиnотрицательное
takeWhile
default DoubleStream takeWhile(DoublePredicate predicate)
Если этот поток упорядочен, то самая длинная префиксная последовательность — это непрерывная последовательность элементов из этого потока, соответствующая заданному предикату. Первый элемент последовательности — первый элемент этого потока, а элемент, непосредственно следующий за последним элементом последовательности, не соответствует заданному предикату.
Если этот поток неупорядочен и некоторые (но не все) элементы этого потока соответствуют заданному предикату, поведение этой операции является не детерминированным; он может выбрать любое подмножество соответствующих элементов (включая пустое множество).
Независимо от того, упорядочен ли этот поток или нет, если все элементы потока соответствуют заданному предикату, эта операция берет все элементы (результат совпадает с входом), или если ни один элемент потока не соответствует заданному предикату, то элементы не берутся (результат — пустой поток).
- Примечание API:
- Хотя
takeWhile()обычно является недорогим действием для последовательных потоков данных, он может быть довольно дорогим для упорядоченных параллельных потоков, поскольку операция ограничена возвращением не просто любого допустимого префикса, а самой длинной префиксной последовательности элементов в порядке их встречи. Использование неупорядоченного источника потока (такого какgenerate(DoubleSupplier)) или удаление ограничения упорядоченности с помощьюBaseStream.unordered()может привести к значительному ускорениюtakeWhile()в параллельных потоках, если семантика вашей ситуации это позволяет. Если необходима согласованность с порядком встречи, и вы сталкиваетесь с низкой производительностью или использованием памяти при использованииtakeWhile()в параллельных потоках, переход к последовательному выполнению с помощьюBaseStream.sequential()может улучшить производительность. - Требования к реализации:
- Стандартная реализация получает
spliteratorэтого потока, оборачивает этот разделитель для поддержки семантики этой операции при переборе и возвращает новый поток, связанный с обернутым разделителем. Возвращаемый поток сохраняет характеристики выполнения этого потока (а именно, параллельное или последовательное выполнение согласноBaseStream.isParallel()), но обернутый разделитель может выбрать не поддерживать разделение. При закрытии возвращаемого потока вызываются обработчики закрытия как для возвращаемого, так и для этого потока. - Параметры:
-
predicate- не вмешивающийся, бессостоятельный предикат для применения к элементам для определения самой длинной префиксной последовательности элементов. - Возвращает:
- новый поток
- С:
- 9
dropWhile
default DoubleStream dropWhile(DoublePredicate predicate)
Если этот поток упорядочен, то самая длинная префиксная последовательность — это непрерывная последовательность элементов из этого потока, соответствующая заданному предикату. Первый элемент последовательности — первый элемент этого потока, а элемент, непосредственно следующий за последним элементом последовательности, не соответствует заданному предикату.
Если этот поток неупорядочен и некоторые (но не все) элементы этого потока соответствуют заданному предикату, поведение этой операции является не детерминированным; он может удалить любое подмножество соответствующих элементов (включая пустое множество).
Независимо от того, упорядочен ли этот поток или нет, если все элементы потока соответствуют заданному предикату, эта операция отбрасывает все элементы (результат — пустой поток), или если ни один элемент потока не соответствует заданному предикату, то элементы не отбрасываются (результат — такой же, как входной).
- Примечание API:
- Хотя
dropWhile()обычно является недорогим действием для последовательных потоков данных, он может быть довольно дорогим для упорядоченных параллельных потоков, поскольку операция ограничена возвращением не просто любого допустимого префикса, а самой длинной префиксной последовательности элементов в порядке их встречи. Использование неупорядоченного источника потока (такого какgenerate(DoubleSupplier)) или удаление ограничения упорядоченности с помощьюBaseStream.unordered()может привести к значительному ускорениюdropWhile()в параллельных потоках, если семантика вашей ситуации это позволяет. Если необходима согласованность с порядком встречи, и вы сталкиваетесь с низкой производительностью или использованием памяти при использованииdropWhile()в параллельных потоках, переход к последовательному выполнению с помощьюBaseStream.sequential()может улучшить производительность. - Требования к реализации:
- Стандартная реализация получает
spliteratorэтого потока, оборачивает этот разделитель для поддержки семантики этой операции при переборе и возвращает новый поток, связанный с обернутым разделителем. Возвращаемый поток сохраняет характеристики выполнения этого потока (а именно, параллельное или последовательное выполнение согласноBaseStream.isParallel()), но обернутый разделитель может выбрать не поддерживать разделение. При закрытии возвращаемого потока вызываются обработчики закрытия как для возвращаемого, так и для этого потока. - Параметры:
-
predicate- не вмешивающийся, бессостоятельный предикат для применения к элементам для определения самой длинной префиксной последовательности элементов. - Возвращает:
- новый поток
- С:
- 9
forEach
void forEach(DoubleConsumer action)
Это конечная операция.
Для параллельных потоков данных эта операция не гарантирует соблюдение порядка встречи элементов потока, так как это приведет к потере преимуществ параллелизма. Для любого данного элемента действие может быть выполнено в любое время и в любой потоке, выбранном библиотекой. Если действие обращается к общим данным, оно отвечает за предоставление необходимой синхронизации.
- Параметры:
-
action- не вмешивающееся действие, выполняемое над элементами
forEachOrdered
void forEachOrdered(DoubleConsumer action)
Это конечная операция.
- Параметры:
-
action- не вмешивающееся действие, выполняемое над элементами - См. также:
toArray
double[] toArray()
Это конечная операция.
- Возвращает:
- массив, содержащий элементы этого потока
reduce
double reduce(double identity, DoubleBinaryOperator op)
double result = identity;
for (double element : this stream)
result = accumulator.applyAsDouble(result, element)
return result;
но не ограничено выполнением последовательно. Значение identity должно быть тождеством для функции накопления. Это означает, что для всех x, accumulator.apply(identity, x) равно x. Функция accumulator должна быть ассоциативной функцией.
- Примечание к API:
- Сумма, минимум, максимум и среднее значение — все это частные случаи свертки. Суммирование потока чисел может быть выражено как:
или более компактно:double sum = numbers.reduce(0, (a, b) -> a+b);double sum = numbers.reduce(0, Double::sum);Хотя это может показаться более окольным способом выполнения агрегации по сравнению с простым изменением текущей суммы в цикле, операции свертки параллелизуются более изящно, без необходимости дополнительной синхронизации и с значительно сниженным риском гонки данных.
- Параметры:
-
identity- начальное значение для функции накопления -
op- ассоциативная, не мешающая, бесстатная функция для объединения двух значений - Возвращает:
- результат свертки
- См. также:
reduce
OptionalDouble reduce(DoubleBinaryOperator op)
OptionalDouble, описывающий свернутое значение, если таковое имеется. Это эквивалентно:
boolean foundAny = false;
double result = null;
for (double element : this stream) {
if (!foundAny) {
foundAny = true;
result = element;
}
else
result = accumulator.applyAsDouble(result, element);
}
return foundAny ? OptionalDouble.of(result) : OptionalDouble.empty();
но не ограничено выполнением последовательно. Функция accumulator должна быть ассоциативной функцией.
- Параметры:
-
op- ассоциативная, не мешающая, бесстатная функция для объединения двух значений - Возвращает:
- результат свертки
- См. также:
collect
<R> R collect(Supplier<R> supplier, ObjDoubleConsumer<R> accumulator, BiConsumer<R,R> combiner)
ArrayList, а элементы включаются путем обновления состояния результата, а не путем замены результата. Это дает результат, эквивалентный:
R result = supplier.get();
for (double element : this stream)
accumulator.accept(result, element);
return result;
Как и reduce(double, DoubleBinaryOperator), операции collect могут быть распараллелены без необходимости дополнительной синхронизации.
- Параметры типа:
-
R- тип изменяемого контейнера результатов - Параметры:
-
supplier- функция, которая создает новый изменяемый контейнер результатов. Для параллельного выполнения эта функция может вызываться несколько раз, и каждый раз она должна возвращать новое значение. -
accumulator- ассоциативная, не мешающая, бесстатная функция, которая должна сворачивать элемент в контейнер результатов. -
combiner- ассоциативная, не мешающая, бесстатная функция, которая принимает два частичных контейнера результатов и объединяет их, которая должна быть совместима с функцией накопления. Функция объединения должна сворачивать элементы из второго контейнера результатов в первый контейнер результатов. - Возвращает:
- результат свертки
- См. также:
sum
double sum()
return reduce(0, Double::sum);
Однако, поскольку суммирование с плавающей запятой не является точным, приведенный выше код не обязательно эквивалентен вычислению суммирования, выполняемому этим методом. Значение суммы с плавающей запятой является функцией как входных значений, так и порядка операций сложения. Порядок операций сложения этого метода преднамеренно не определен, чтобы обеспечить гибкость реализации для повышения скорости и точности вычисляемого результата. В частности, этот метод может быть реализован с использованием компенсированного суммирования или другой техники для уменьшения границы погрешности в численной сумме по сравнению с простым суммированием значений double. Из-за неопределенного порядка операций и возможности использования различных схем суммирования вывод этого метода может варьироваться на одних и тех же входных элементах.
Различные условия могут привести к вычислению бесконечной суммы. Это может произойти даже в том случае, если все суммируемые элементы конечны. Если какой-либо элемент не является конечным, сумма будет бесконечной:
- Если какой-либо элемент является NaN, то конечная сумма будет NaN.
- Если элементы содержат одну или несколько бесконечностей, сумма будет бесконечной или NaN.
- Если элементы содержат бесконечности противоположного знака, сумма будет NaN.
- Если элементы содержат бесконечности одного знака, а промежуточная сумма переполняется до бесконечности противоположного знака, сумма может быть NaN.
- Примечание к API:
- Элементы, отсортированные по возрастающей абсолютной величине, как правило, дают более точные результаты.
- Возвращает:
- сумму элементов в этом потоке
min
OptionalDouble min()
OptionalDouble, описывающий минимальный элемент этого потока, или пустой OptionalDouble, если этот поток пуст. Минимальный элемент будет Double.NaN, если любой элемент потока был NaN. В отличие от операторов численного сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Это частный случай свертки и эквивалентно:
return reduce(Double::min);
- Возвращает:
OptionalDouble, содержащий минимальный элемент этого потока, или пустой необязательный элемент, если поток пуст
max
OptionalDouble max()
OptionalDouble, описывающий максимальный элемент этого потока, или пустой OptionalDouble, если этот поток пуст. Максимальный элемент будет Double.NaN, если любой элемент потока был NaN. В отличие от операторов численного сравнения, этот метод считает отрицательный ноль строго меньшим, чем положительный ноль. Это частный случай свертки и эквивалентно:
return reduce(Double::max);
- Возвращает:
OptionalDouble, содержащий максимальный элемент этого потока, или пустой необязательный элемент, если поток пуст
count
long count()
return mapToLong(e -> 1L).sum();
- Примечание к API:
- Реализация может выбрать не выполнять конвейер потока (последовательно или параллельно), если она способна вычислить количество непосредственно из источника потока. В таких случаях никакие исходные элементы не будут пройдены, и никакие промежуточные операции не будут оценены. Поведенческие параметры с побочными эффектами, которые настоятельно не рекомендуются, за исключением безвредных случаев, таких как отладка, могут быть затронуты. Например, рассмотрим следующий поток:
Количество элементов, охватываемых источником потока, известно, и промежуточная операция,DoubleStream s = DoubleStream.of(1, 2, 3, 4); long count = s.peek(System.out::println).count();peek, не вставляет и не удаляет элементы из потока (как это может быть в случае операцийflatMapилиfilter). Таким образом, количество равно 4, и нет необходимости выполнять конвейер и, в качестве побочного эффекта, выводить элементы. - Возвращает:
- количество элементов в этом потоке
average
OptionalDouble average()
OptionalDouble, описывающий среднее арифметическое элементов этого потока, или пустой необязательный элемент, если этот поток пуст. Вычисленное среднее значение может варьироваться численно и иметь специальное поведение, как при вычислении суммы; см. sum() для получения подробной информации.
Среднее значение является частным случаем свертки.
- Примечание к API:
- Элементы, отсортированные по возрастающей абсолютной величине, как правило, дают более точные результаты.
- Возвращает:
OptionalDouble, содержащий средний элемент этого потока, или пустой необязательный элемент, если поток пуст
summaryStatistics
DoubleSummaryStatistics summaryStatistics()
DoubleSummaryStatistics , описывающую различные сводные данные об элементах этого потока. Это частный случай редукции. Это конечная операция.
- Returns:
- a
DoubleSummaryStatisticsописывающая различные сводные данные об элементах этого потока
anyMatch
boolean anyMatch(DoublePredicate predicate)
false, и предикат не вычисляется.
- API Note:
- Этот метод вычисляет экзистенциальную квантификацию предиката по элементам потока (для некоторого x P(x)).
- Parameters:
-
predicate- невмешивающийся, бессостоятельный предикат, который нужно применить к элементам этого потока - Returns:
-
true, если какие-либо элементы потока соответствуют предоставленному предикату, в противном случаеfalse
allMatch
boolean allMatch(DoublePredicate predicate)
true, и предикат не вычисляется.
- API Note:
- Этот метод вычисляет универсальную квантификацию предиката по элементам потока (для всех x P(x)). Если поток пуст, квантификация считается ваккуумно удовлетворяющей и всегда
true(независимо от P(x)). - Parameters:
-
predicate- невмешивающийся, бессостоятельный предикат, который нужно применить к элементам этого потока - Returns:
-
true, если все элементы потока соответствуют предоставленному предикату или поток пуст, в противном случаеfalse
noneMatch
boolean noneMatch(DoublePredicate predicate)
true, и предикат не вычисляется.
- API Note:
- Этот метод вычисляет универсальную квантификацию отрицания предиката по элементам потока (для всех x ~P(x)). Если поток пуст, квантификация считается ваккуумно удовлетворяющей и всегда
true, независимо от P(x). - Parameters:
-
predicate- невмешивающийся, бессостоятельный предикат, который нужно применить к элементам этого потока - Returns:
-
true, если ни один элемент потока не соответствует предоставленному предикату или поток пуст, в противном случаеfalse
findFirst
OptionalDouble findFirst()
OptionalDouble, описывающую первый элемент этого потока, или пустой OptionalDouble , если поток пуст. Если у потока нет порядка встречи, может быть возвращён любой элемент.
- Returns:
- a
OptionalDoubleописывающую первый элемент этого потока, или пустойOptionalDouble, если поток пуст
findAny
OptionalDouble findAny()
OptionalDouble, описывающую какой-либо элемент потока, или пустой OptionalDouble , если поток пуст. Поведение этой операции явно недетерминировано; она свободна выбрать любой элемент в потоке. Это позволяет обеспечить максимальную производительность в параллельных операциях; затраты заключаются в том, что несколько вызовов одного и того же источника могут не возвращать один и тот же результат. (Если требуется стабильный результат, используйте findFirst() вместо этого.)
- Returns:
- a
OptionalDoubleописывающую какой-либо элемент этого потока, или пустойOptionalDouble, если поток пуст - See Also:
boxed
Stream<Double> boxed()
Stream , содержащий элементы этого потока, упакованные в Double.
- Returns:
- a
Streamсодержащий элементы этого потока, каждый упакованный вDouble
builder
static DoubleStream.Builder builder()
DoubleStream.- Returns:
- a stream builder
empty
static DoubleStream empty()
DoubleStream.- Returns:
- an empty sequential stream
of
static DoubleStream of(double t)
DoubleStream , содержащий один элемент.- Parameters:
-
t- единственный элемент - Returns:
- a singleton sequential stream
of
static DoubleStream of(double... values)
- Parameters:
-
values- элементы нового потока - Returns:
- the new stream
iterate
static DoubleStream iterate(double seed, DoubleUnaryOperator f)
DoubleStream , полученный итеративным применением функции f к начальному элементу seed, создавая Stream , состоящий из seed, f(seed), f(f(seed)) и т.д. Первый элемент (позиция 0) в DoubleStream будет предоставленным seed. Для n > 0, элемент на позиции n, будет результатом применения функции f к элементу на позиции n - 1.
Действие применения f для одного элемента предшествует действию применения f для последующих элементов. Для любого заданного элемента действие может выполняться в любом потоке, который библиотека выбирает.
- Parameters:
-
seed- начальный элемент -
f- функция, применяемая к предыдущему элементу для получения нового элемента - Returns:
- a new sequential stream
iterate
static DoubleStream iterate(double seed, DoublePredicate hasNext, DoubleUnaryOperator next)
DoubleStream , полученный итеративным применением заданной функции next к начальному элементу, при условии выполнения заданного предиката hasNext. Поток завершается, как только предикат hasNext возвращает false. DoubleStream.iterate должен генерировать ту же последовательность элементов, что и соответствующий цикл for:
for (double index=seed; hasNext.test(index); index = next.applyAsDouble(index)) {
...
}
Результат может быть пустым, если предикат hasNext не выполняется для начального значения. В противном случае первым элементом будет предоставленное значение seed, следующим (если есть) будет результат применения функции next к значению seed, и так далее итеративно, пока предикат hasNext не укажет, что поток должен завершиться.
Действие применения предиката hasNext к элементу предшествует действию применения функции next к этому элементу. Действие применения функции next для одного элемента предшествует действию применения предиката hasNext для последующих элементов. Для любого заданного элемента действие может выполняться в любом потоке, который выбирает библиотека.
- Parameters:
-
seed- начальный элемент -
hasNext- предикат, применяемый к элементам для определения момента завершения потока. -
next- функция, применяемая к предыдущему элементу для получения нового элемента - Returns:
- a new sequential stream
- Since:
- 9
generate
static DoubleStream generate(DoubleSupplier s)
DoubleSupplier. Это подходит для генерации постоянных потоков, потоков случайных элементов и т. д.- Parameters:
-
s-DoubleSupplierдля сгенерированных элементов - Returns:
- a new infinite sequential unordered
DoubleStream
concat
static DoubleStream concat(DoubleStream a, DoubleStream b)
Этот метод работает с двумя входными потоками и связывает каждый поток с его источником. В результате последующие изменения источника входного потока могут не отражаться в результирующем конкатенированном потоке.
- Примечание API:
- Для сохранения возможностей оптимизации этот метод связывает каждый поток с его источником и принимает только два потока в качестве параметров. Например, точный размер источника конкатенированного потока может быть вычислен, если известен точный размер источника каждого входного потока. Для конкатенации более потоков без связывания или без вложенных вызовов этого метода попробуйте создать поток потоков и выполнить плоское отображение с помощью функции тождества, например:
DoubleStream concat = Stream.of(s1, s2, s3, s4).flatMapToDouble(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/DoubleStream.html