Spec-Zone.ru › OpenJDK 27

Класс Spliterators.AbstractIntSpliterator

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

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

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

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

Начиная с:
1.8
См. также:
  • Spliterators.spliterator(java.util.PrimitiveIterator.OfInt, long, int)

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

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

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

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

Поля, объявленные в интерфейсе 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
Значение характеристики, означающее, что все Spliterator, полученные в результате вызова trySplit(), будут иметь характеристики Spliterator.SIZED и Spliterator.SUBSIZED.

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

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

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

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

Методы, объявленные в классе 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 или возникновения прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или возникновения прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или возникновения прерывания, либо до истечения заданного промежутка реального времени.

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

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

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

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

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

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

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

AbstractIntSpliterator

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

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

trySplit

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

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

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

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

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

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

estimateSize

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

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

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

characteristics

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

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

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

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