Spec-Zone.ru › OpenJDK 27

Класс Spliterators.AbstractLongSpliterator

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

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

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

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

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

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

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

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

Модификатор и тип Метод Описание
int characteristics()
Возвращает набор характеристик этого Spliterator и его элементов.
long estimateSize()
Возвращает оценку количества элементов, которые будут встречены при обходе Spliterator.forEachRemaining(Consumer), или возвращает Long.MAX_VALUE, если это количество бесконечно, неизвестно или его вычисление слишком затратно.
Spliterator.OfLong 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 или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

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

getComparator, getExactSizeIfKnown, hasCharacteristics
Модификатор и тип Метод Описание
default Comparator<? super Long> 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.OfLong

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

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

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

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

AbstractLongSpliterator

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

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

trySplit

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

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

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

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

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

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

estimateSize

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

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

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

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