Spec-Zone.ru › OpenJDK 27

Класс Spliterators.AbstractDoubleSpliterator

java.lang.Object
java.util.Spliterators.AbstractDoubleSpliterator
Все реализуемые интерфейсы:
Spliterator<Double>, Spliterator.OfDouble, Spliterator.OfPrimitive<Double, DoubleConsumer, Spliterator.OfDouble>
Внешний класс:
Spliterators
public abstract static class Spliterators.AbstractDoubleSpliterator extends Object implements Spliterator.OfDouble
Абстрактный Spliterator.OfDouble, реализующий trySplit для обеспечения ограниченного параллелизма.

Для реализации сплитератора расширяющему класс достаточно реализовать tryAdvance. Расширяющему классу следует переопределить forEachRemaining, если он может предоставить более эффективную реализацию.

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

Альтернативой использованию этого класса, которая также обеспечивает ограниченный параллелизм, является создание сплитератора на основе итератора (см. Spliterators.spliterator(java.util.PrimitiveIterator.OfDouble, long, int)). В зависимости от обстоятельств использовать итератор может быть проще или удобнее, чем расширять этот класс. Например, если уже имеется итератор, который можно использовать, расширять этот класс не нужно.

С версии:
1.8
См. также:
  • Spliterators.spliterator(java.util.PrimitiveIterator.OfDouble, long, int)

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

Вложенные классы/интерфейсы, объявленные в интерфейсе Spliterator

Spliterator.OfDouble, Spliterator.OfInt, Spliterator.OfLong, Spliterator.OfPrimitive<T,T_CONS,T_SPLITR>
Модификатор и тип Интерфейс Описание
static interface  Spliterator.OfDouble
Сплитератор, специализирующийся на значениях типа double.
static interface  Spliterator.OfInt
Сплитератор, специализирующийся на значениях типа int.
static interface  Spliterator.OfLong
Сплитератор, специализирующийся на значениях типа long.
static interface  Spliterator.OfPrimitive<T, T_CONS, T_SPLITR extends Spliterator.OfPrimitive<T,T_CONS,T_SPLITR>>
Сплитератор, специализирующийся на примитивных значениях.

Краткое описание полей

Поля, объявленные в интерфейсе Spliterator

CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED
Модификатор и тип Поле Описание
static final int CONCURRENT
Значение характеристики, указывающее, что источник элементов можно безопасно изменять параллельно (добавлять, заменять и/или удалять элементы) несколькими потоками без внешней синхронизации.
static final int DISTINCT
Значение характеристики, указывающее, что для каждой пары встреченных элементов x, y, !x.equals(y).
static final int IMMUTABLE
Значение характеристики, указывающее, что структуру источника элементов нельзя изменять; то есть элементы нельзя добавлять, заменять или удалять, поэтому такие изменения не могут произойти во время обхода.
static final int NONNULL
Значение характеристики, указывающее, что источник гарантирует, что встреченные элементы не будут null.
static final int ORDERED
Значение характеристики, указывающее, что для элементов определен порядок обхода.
static final int SIZED
Значение характеристики, указывающее, что значение, возвращаемое методом estimateSize() до начала обхода или разделения, представляет собой конечный размер и при отсутствии структурных изменений источника точно соответствует количеству элементов, которые будут обнаружены при полном обходе.
static final int SORTED
Значение характеристики, указывающее, что порядок обхода соответствует определенному порядку сортировки.
static final int SUBSIZED
Значение характеристики, указывающее, что все сплитераторы, полученные из trySplit(), будут иметь характеристики Spliterator.SIZED и Spliterator.SUBSIZED.

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

AbstractDoubleSpliterator(long est, int additionalCharacteristics)
Модификатор Конструктор Описание
protected
Создает сплитератор, сообщающий заданный приблизительный размер и характеристики.

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

Модификатор и тип Метод Описание
int characteristics()
Возвращает набор характеристик этого сплитератора и его элементов.
long estimateSize()
Возвращает оценочное количество элементов, которые будут обнаружены при обходе Spliterator.forEachRemaining(Consumer), либо возвращает Long.MAX_VALUE, если количество бесконечно, неизвестно или его вычисление слишком затратно.
Spliterator.OfDouble trySplit()
Если этот сплитератор можно разделить, возвращает сплитератор, охватывающий элементы, которые после возврата из этого метода больше не будут охватываться данным сплитератором.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли другой объект этому.
protected void finalize()
Устарело, подлежит удалению: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе Spliterator

getComparator, getExactSizeIfKnown, hasCharacteristics
Модификатор и тип Метод Описание
default Comparator<? super Double> getComparator()
Если источник этого сплитератора Spliterator.SORTED с помощью Comparator, возвращает этот Comparator.
default long getExactSizeIfKnown()
Вспомогательный метод, возвращающий Spliterator.estimateSize(), если этот сплитератор имеет характеристику Spliterator.SIZED, и -1 в противном случае.
default boolean hasCharacteristics(int characteristics)
Возвращает true, если Spliterator.characteristics() этого сплитератора содержит все заданные характеристики.

Методы, объявленные в интерфейсе Spliterator.OfDouble

forEachRemaining, tryAdvance
Модификатор и тип Метод Описание
default void forEachRemaining(Consumer<? super Double> action)
Последовательно, в текущем потоке, выполняет заданное действие для каждого оставшегося элемента, пока не будут обработаны все элементы или действие не вызовет исключение.
default boolean tryAdvance(Consumer<? super Double> action)
Если имеется оставшийся элемент, выполняет над ним заданное действие и возвращает true; в противном случае возвращает false.

Методы, объявленные в интерфейсе Spliterator.OfPrimitive

forEachRemaining, tryAdvance
Модификатор и тип Метод Описание
default void forEachRemaining(DoubleConsumer action)
Последовательно, в текущем потоке, выполняет заданное действие для каждого оставшегося элемента, пока не будут обработаны все элементы или действие не вызовет исключение.
boolean tryAdvance(DoubleConsumer action)
Если имеется оставшийся элемент, выполняет над ним заданное действие и возвращает true; в противном случае возвращает false.

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

AbstractDoubleSpliterator

protected AbstractDoubleSpliterator(long est, int additionalCharacteristics)
Создает сплитератор, сообщающий заданный приблизительный размер и характеристики.
Параметры:
est — приблизительный размер этого сплитератора, если он известен; в противном случае — Long.MAX_VALUE.
additionalCharacteristics — свойства источника или элементов этого сплитератора. Если указано SIZED, этот сплитератор дополнительно будет сообщать SUBSIZED.

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

trySplit

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

Если этот сплитератор имеет характеристику Spliterator.ORDERED, возвращаемый сплитератор должен охватывать строгий префикс элементов.

Если этот сплитератор не охватывает бесконечное количество элементов, повторные вызовы trySplit() должны в конечном итоге вернуть null. При возврате ненулевого значения:

  • значение, сообщенное для estimateSize() до разделения, после разделения должно быть больше либо равно estimateSize() для этого сплитератора и возвращенного сплитератора; и
  • если этот сплитератор имеет характеристику SUBSIZED, то estimateSize() для этого сплитератора до разделения должно быть равно сумме estimateSize() для этого и возвращенного сплитераторов после разделения.

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

Определено в:
trySplit в интерфейсе Spliterator<Double>
Возвращает:
сплитератор Spliterator, охватывающий часть элементов, или null, если этот сплитератор нельзя разделить

estimateSize

public long estimateSize()
Возвращает оценочное количество элементов, которые будут обнаружены при обходе Spliterator.forEachRemaining(Consumer), либо возвращает Long.MAX_VALUE, если количество бесконечно, неизвестно или его вычисление слишком затратно.

Если этот сплитератор имеет характеристику Spliterator.SIZED и еще не был частично обойден или разделен либо если он имеет характеристику Spliterator.SUBSIZED и еще не был частично обойден, эта оценка должна точно соответствовать количеству элементов, которые будут обнаружены при полном обходе. В противном случае оценка может быть сколь угодно неточной, но должна уменьшаться в соответствии с правилами при каждом вызове Spliterator.trySplit().

Определено в:
estimateSize в интерфейсе Spliterator<Double>
Требования к реализации:
Эта реализация возвращает приблизительный размер, заданный при создании, и, если он известен, уменьшает его при разделении.
Возвращает:
приблизительный размер или Long.MAX_VALUE, если количество бесконечно, неизвестно или его вычисление слишком затратно.

characteristics

public int characteristics()
Возвращает набор характеристик этого сплитератора и его элементов. Результат представлен значениями, объединенными операцией ИЛИ: Spliterator.ORDERED, Spliterator.DISTINCT, Spliterator.SORTED, Spliterator.SIZED, Spliterator.NONNULL, Spliterator.IMMUTABLE, Spliterator.CONCURRENT, Spliterator.SUBSIZED. Повторные вызовы characteristics() для заданного сплитератора до вызовов trySplit или между ними всегда должны возвращать один и тот же результат.

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

Определено в:
characteristics в интерфейсе Spliterator<Double>
Требования к реализации:
Эта реализация возвращает характеристики, заданные при создании.
Возвращает:
представление характеристик

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

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