Интерфейс 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
- См. также:
Краткое описание вложенных классов
| Modifier and Type | Interface | Description |
|---|---|---|
static interface |
DoubleStream.Builder |
Изменяемый билдер для DoubleStream. |
static interface |
DoubleStream.DoubleMapMultiConsumer |
Представляет операцию, которая принимает аргумент типа double и DoubleConsumer, и не возвращает результата. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
boolean |
allMatch |
Возвращает true, если все элементы этого потока соответствуют заданному предикату. |
boolean |
anyMatch |
Возвращает true, если хотя бы один элемент этого потока соответствует заданному предикату. |
OptionalDouble |
average() |
Возвращает OptionalDouble, описывающий среднее арифметическое элементов этого потока, или пустой необязательный объект, если поток пустой. |
Stream<Double> |
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<U> |
mapToObj |
Возвращает Stream со значениями типа object, состоящий из результатов применения заданной функции к элементам этого потока. |
OptionalDouble |
max() |
Возвращает OptionalDouble , описывающий максимальный элемент этого потока, или пустой OptionalDouble, если этот поток пустой. |
OptionalDouble |
min() |
Возвращает OptionalDouble , описывающий минимальный элемент этого потока, или пустой OptionalDouble, если этот поток пустой. |
boolean |
noneMatch |
Возвращает true, если ни один элемент этого потока не соответствует заданному предикату. |
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 Note:
- Суммирование, минимум, максимум и среднее значение — все являются частными случаями сведения. Суммирование потока чисел может быть выражено как:
или более кратко:double sum = numbers.reduce(0, (a, b) -> a+b);double sum = numbers.reduce(0, Double::sum);Хотя это может показаться более окольным способом выполнения агрегации по сравнению с простым изменением текущей суммы в цикле, операции сведения более эффективно параллелизуются без необходимости дополнительной синхронизации и с значительно меньшим риском гонок данных.
- Parameters:
-
identity— начальное значение для функции накопления -
op— ассоциативная, невмешивающаяся, бессостоятельная функция для объединения двух значений - Returns:
- результат сведения
- See Also:
reduce
OptionalDouble reduce(DoubleBinaryOperator op)
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 должна быть ассоциативной функцией.
Это конечная операция.
- Parameters:
-
op— ассоциативная, невмешивающаяся, бессостоятельная функция для объединения двух значений - Returns:
- результат сведения
- See Also:
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 могут быть распараллелены без необходимости дополнительной синхронизации.
Это конечная операция.
- Type Parameters:
-
R— тип изменяемого контейнера результата - Parameters:
-
supplier— функция, создающая новый изменяемый контейнер результата. Для параллельного выполнения эта функция может вызываться многократно и должна возвращать новое значение каждый раз. -
accumulator— ассоциативная, невмешивающаяся, бессостоятельная функция, которая должна складывать элемент в контейнер результата. -
combiner— ассоциативная, невмешивающаяся, бессостоятельная функция, принимающая два частичных контейнера результата и объединяющая их, которая должна быть совместима с функцией накопления. Функция объединения должна складывать элементы из второго контейнера результата в первый контейнер результата. - Returns:
- результат сведения
- See Also:
sum
double sum()
return reduce(0, Double::sum);
Однако, так как суммирование с плавающей запятой неточно, приведенный выше код не обязательно эквивалентен вычислению суммы, выполняемому этим методом. Значение суммы с плавающей запятой зависит как от входных значений, так и от порядка операций сложения. Порядок операций сложения в этом методе намеренно не определен, чтобы обеспечить гибкость реализации для повышения скорости и точности вычисляемого результата. В частности, этот метод может быть реализован с использованием компенсированного суммирования или другого метода для уменьшения погрешности в числовой сумме по сравнению с простым суммированием double значений. Из-за неопределенного порядка операций и возможности использования различных схем суммирования вывод этого метода может отличаться для одних и тех же входных элементов.
Различные условия могут привести к вычислению бесконечной суммы. Это может произойти даже если все складываемые элементы конечные. Если какой-либо элемент не конечен, сумма будет не конечной:
- Если какой-либо элемент — NaN, то окончательная сумма будет NaN.
- Если элементы содержат одну или несколько бесконечностей, сумма будет бесконечной или NaN.
- Если элементы содержат бесконечности разных знаков, сумма будет NaN.
- Если элементы содержат бесконечности одного знака, а промежуточная сумма переполняется в бесконечность противоположного знака, сумма может быть NaN.
Это конечная операция.
- API Note:
- Элементы, отсортированные по возрастанию абсолютной величины, как правило, дают более точные результаты.
- Returns:
- сумма элементов в этом потоке
min
OptionalDouble min()
Double.NaN если какой-либо элемент потока был NaN. В отличие от числовых операторов сравнения, этот метод рассматривает отрицательный ноль как строго меньший, чем положительный ноль. Это частный случай сведения и эквивалентно:
return reduce(Double::min);
Это конечная операция.
- Returns:
- OptionalDouble, содержащий минимальный элемент этого потока, или пустой Optional, если поток пуст
max
OptionalDouble max()
Double.NaN если какой-либо элемент потока был NaN. В отличие от числовых операторов сравнения, этот метод рассматривает отрицательный ноль как строго меньший, чем положительный ноль. Это частный случай сведения и эквивалентно:
return reduce(Double::max);
Это конечная операция.
- Returns:
- OptionalDouble, содержащий максимальный элемент этого потока, или пустой Optional, если поток пуст
count
long count()
return mapToLong(e -> 1L).sum();
Это конечная операция.
- API Note:
- Реализация может выбрать не выполнять обработку потока (ни последовательно, ни параллельно), если она способна вычислить количество элементов непосредственно из источника потока. В таких случаях элементы источника не будут просматриваться, и промежуточные операции не будут оцениваться. Параметры поведения с побочными эффектами, которые настоятельно не рекомендуются, за исключением безобидных случаев, таких как отладка, могут быть затронуты. Например, рассмотрим следующий поток:
Количество элементов, охватываемых источником потока, известно, а промежуточная операцияDoubleStream s = DoubleStream.of(1, 2, 3, 4); long count = s.peek(System.out::println).count();peekне вводит в поток и не удаляет элементы из него (в отличие от операцийflatMapилиfilter). Таким образом, количество элементов равно 4, и нет необходимости выполнять обработку потока и, в качестве побочного эффекта, выводить элементы. - Returns:
- количество элементов в этом потоке
average
OptionalDouble average()
Вычисленное среднее значение может численно отличаться и иметь специальное поведение, как при вычислении суммы; см. sum() для получения подробностей.
Среднее значение — это частный случай сведения.
Это конечная операция.
- API Note:
- Элементы, отсортированные по возрастанию абсолютной величины, как правило, дают более точные результаты.
- Returns:
- OptionalDouble, содержащий среднее значение элементов этого потока, или пустой Optional, если поток пуст
summaryStatistics
DoubleSummaryStatistics summaryStatistics()
DoubleSummaryStatistics, описывающую различные сводные данные об элементах этого потока. Это специальный случай редукции. Это конечная операция.
- Возвращает:
- a
DoubleSummaryStatisticsописывающую различные сводные данные об элементах этого потока
anyMatch
boolean anyMatch(DoublePredicate predicate)
false, и предикат не вычисляется.
- API Note:
- Этот метод вычисляет экзистенциальную квантификацию предиката по элементам потока (для некоторого x P(x)).
- Параметры:
-
predicate- непомеховой, бессостоятельный предикат, применяемый к элементам этого потока - Возвращает:
-
true, если какие-либо элементы потока соответствуют предоставленному предикату, в противном случаеfalse
allMatch
boolean allMatch(DoublePredicate predicate)
true, и предикат не вычисляется.
- API Note:
- Этот метод вычисляет универсальную квантификацию предиката по элементам потока (для всех x P(x)). Если поток пуст, квантификация считается пусто удовлетворённой и всегда равна
true(независимо от P(x)). - Параметры:
-
predicate- непомеховой, бессостоятельный предикат, применяемый к элементам этого потока - Возвращает:
-
true, если все элементы потока соответствуют предоставленному предикату или поток пуст, в противном случаеfalse
noneMatch
boolean noneMatch(DoublePredicate predicate)
true, и предикат не вычисляется.
- API Note:
- Этот метод вычисляет универсальную квантификацию отрицаемого предиката по элементам потока (для всех x ~P(x)). Если поток пуст, квантификация считается пусто удовлетворённой и всегда равна
true, независимо от P(x). - Параметры:
-
predicate- непомеховой, бессостоятельный предикат, применяемый к элементам этого потока - Возвращает:
-
true, если ни один элемент потока не соответствует предоставленному предикату или поток пуст, в противном случаеfalse
findFirst
OptionalDouble findFirst()
OptionalDouble, описывающую первый элемент этого потока, или пустой OptionalDouble , если поток пуст. Если у потока нет порядка обработки, то может быть возвращён любой элемент.
- Возвращает:
- an
OptionalDoubleописывающую первый элемент этого потока, или пустойOptionalDoubleесли поток пуст
findAny
OptionalDouble findAny()
OptionalDouble, описывающую некоторый элемент потока, или пустой OptionalDouble если поток пуст. Поведение этой операции явно недетерминировано; она свободна выбирать любой элемент в потоке. Это позволяет максимально повысить производительность в параллельных операциях; цена заключается в том, что несколько вызовов одного и того же источника могут не возвращать один и тот же результат. (Если желателен стабильный результат, используйте findFirst() вместо этого.)
- Возвращает:
- an
OptionalDoubleописывающую некоторый элемент этого потока, или пустойOptionalDoubleесли поток пуст - См. также:
boxed
Stream<Double> boxed()
Stream , состоящий из элементов этого потока, преобразованных в Double.
- Возвращает:
- a
Streamсостоящий из элементов этого потока, каждый из которых преобразован вDouble
builder
static DoubleStream.Builder builder()
DoubleStream.- Возвращает:
- билдер потока
empty
static DoubleStream empty()
DoubleStream.- Возвращает:
- пустой последовательный поток
of
static DoubleStream of(double t)
DoubleStream , содержащий один элемент.- Параметры:
-
t- единственный элемент - Возвращает:
- последовательный поток из одного элемента
of
static DoubleStream of(double... values)
- Параметры:
-
values- элементы нового потока - Возвращает:
- новый поток
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 к последующим элементам. Для каждого элемента действие может выполняться в любой выбранной библиотекой потоке.
- Параметры:
-
seed- начальный элемент -
f- функция, применяемая к предыдущему элементу для получения нового элемента - Возвращает:
- новый последовательный
DoubleStream
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 предиката к последующим элементам. Для каждого элемента действие может выполняться в любом выбранном библиотекой потоке.
- Параметры:
-
seed- начальный элемент -
hasNext- предикат, применяемый к элементам для определения момента завершения потока. -
next- функция, применяемая к предыдущему элементу для получения нового элемента - Возвращает:
- новый последовательный
DoubleStream - С:
- 9
generate
static DoubleStream generate(DoubleSupplier s)
DoubleSupplier. Это подходит для генерации постоянных потоков, потоков случайных элементов и т. д.- Параметры:
-
s-DoubleSupplierдля генерируемых элементов - Возвращает:
- новый бесконечный последовательный неупорядоченный
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, 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/DoubleStream.html