Spec-Zone.ru › OpenJDK 27

Класс Spliterators.AbstractSpliterator<T>

java.lang.Object
java.util.Spliterators.AbstractSpliterator<T>
Параметры типа:
T — тип элементов, возвращаемых этим сплитератором
Все реализуемые интерфейсы:
Spliterator<T>
Внешний класс:
Spliterators
public abstract static class Spliterators.AbstractSpliterator<T> extends Object implements Spliterator<T>
Абстрактный Spliterator, реализующий trySplit для обеспечения ограниченного параллелизма.

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

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

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

Начиная с версии:
1.8
См. также:
  • Spliterators.spliterator(Iterator, 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.

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

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

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

Модификатор и тип Метод Описание
int characteristics()
Возвращает набор характеристик этого сплитератора и его элементов.
long estimateSize()
Возвращает оценку количества элементов, которые будут обнаружены при обходе Spliterator.forEachRemaining(Consumer), или возвращает Long.MAX_VALUE, если их бесконечное количество, оно неизвестно или вычисление слишком затратное.
Spliterator<T> 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

forEachRemaining, getComparator, getExactSizeIfKnown, hasCharacteristics, tryAdvance
Модификатор и тип Метод Описание
default void forEachRemaining(Consumer<? super T> action)
Последовательно, в текущем потоке, выполняет заданное действие для каждого оставшегося элемента, пока не будут обработаны все элементы или действие не вызовет исключение.
default Comparator<? super T> getComparator()
Если источник этого сплитератора Spliterator.SORTED с помощью Comparator, возвращает этот Comparator.
default long getExactSizeIfKnown()
Вспомогательный метод, возвращающий Spliterator.estimateSize(), если этот сплитератор имеет характеристику Spliterator.SIZED, иначе — -1.
default boolean hasCharacteristics(int characteristics)
Возвращает true, если Spliterator.characteristics() этого сплитератора содержит все заданные характеристики.
boolean tryAdvance(Consumer<? super T> action)
Если имеется оставшийся элемент, выполняет для него заданное действие и возвращает true; в противном случае возвращает false.

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

AbstractSpliterator

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

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

trySplit

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

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

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

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

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

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

estimateSize

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

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

Определено в:
estimateSize в интерфейсе Spliterator<T>
Требования к реализации:
Эта реализация возвращает оценку размера, заданную при создании, и, если оценка известна, уменьшает ее при разделении.
Возвращает:
оценку размера или 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<T>
Требования к реализации:
Эта реализация возвращает характеристики, заданные при создании.
Возвращает:
представление характеристик

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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