Класс 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
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе 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, |
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. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
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 |
Указывает, равен ли этот объект некоторому другому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе Spliterator
getComparator, getExactSizeIfKnown, hasCharacteristics | Модификатор и тип | Метод | Описание |
|---|---|---|
default Comparator |
getComparator() |
Если источник этого Spliterator отсортирован по Spliterator.SORTED с помощью Comparator, возвращает этот Comparator. |
default long |
getExactSizeIfKnown() |
Вспомогательный метод, возвращающий Spliterator.estimateSize(), если этот Spliterator имеет характеристику Spliterator.SIZED, и -1 в противном случае. |
default boolean |
hasCharacteristics |
Возвращает true, если Spliterator.characteristics() этого Spliterator содержат все указанные характеристики. |
Методы, объявленные в интерфейсе Spliterator.OfLong
forEachRemaining, tryAdvance | Модификатор и тип | Метод | Описание |
|---|---|---|
default void |
forEachRemaining |
Последовательно, в текущем потоке, выполняет заданное действие для каждого оставшегося элемента, пока не будут обработаны все элементы или действие не выбросит исключение. |
default boolean |
tryAdvance |
Если остался хотя бы один элемент, выполняет для него заданное действие и возвращает true; в противном случае возвращает false. |
Методы, объявленные в интерфейсе Spliterator.OfPrimitive
forEachRemaining, tryAdvance | Модификатор и тип | Метод | Описание |
|---|---|---|
default void |
forEachRemaining |
Последовательно, в текущем потоке, выполняет заданное действие для каждого оставшегося элемента, пока не будут обработаны все элементы или действие не выбросит исключение. |
boolean |
tryAdvance |
Если остался хотя бы один элемент, выполняет для него заданное действие и возвращает true; в противном случае возвращает false. |
Подробное описание конструкторов
AbstractLongSpliterator
protected AbstractLongSpliterator(long est, int additionalCharacteristics)
- Параметры:
-
est— оценочный размер этого сплитератора, если он известен; в противном случае —Long.MAX_VALUE. -
additionalCharacteristics— свойства источника или элементов этого сплитератора. Если указаноSIZED, этот сплитератор также будет сообщатьSUBSIZED.
Подробное описание методов
trySplit
public Spliterator.OfLong trySplit()
Если этот 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.ORDERED, Spliterator.DISTINCT, Spliterator.SORTED, Spliterator.SIZED, Spliterator.NONNULL, Spliterator.IMMUTABLE, Spliterator.CONCURRENT, Spliterator.SUBSIZED. Повторные вызовы characteristics() для одного сплитератора до или между вызовами trySplit всегда должны возвращать один и тот же результат. Если Spliterator сообщает несогласованный набор характеристик (как при одном вызове, так и при нескольких), гарантии для любых вычислений с использованием этого Spliterator не предоставляются.
- Определено в:
-
characteristicsв интерфейсеSpliterator<Long> - Требования к реализации:
- Эта реализация возвращает характеристики, заданные при создании.
- Возвращает:
- представление характеристик
© 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.