Класс Spliterators.AbstractSpliterator<T>
- Параметры типа:
-
T- тип элементов, возвращаемых этим Spliterator
- Все реализованные интерфейсы:
Spliterator<T>
- Вложенный класс:
Spliterators
public abstract static class Spliterators.AbstractSpliterator<T> extends Object implements Spliterator<T>
Spliterator , реализующий trySplit для поддержки ограниченного параллелизма. Расширяющему классу необходимо только реализовать tryAdvance. Расширяющий класс должен переопределить forEachRemaining, если он может предоставить более эффективную реализацию.
- Примечание API:
- Этот класс является полезным инструментом для создания spliterator, когда невозможно или сложно эффективно разбить элементы таким образом, чтобы позволить сбалансированное параллельное вычисление.
Альтернативой использованию этого класса, которая также позволяет ограниченный параллелизм, является создание spliterator из итератора (см.
Spliterators.spliterator(Iterator, long, int). В зависимости от обстоятельств использование итератора может быть проще или удобнее, чем расширение этого класса, например, когда уже доступен используемый итератор. - С:
- 1.8
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.Spliterator
Spliterator.OfDouble, Spliterator.OfInt, Spliterator.OfLong, Spliterator.OfPrimitive<T, T_CONS, T_SPLITR extends Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>>
Краткое описание полей
Поля, объявленные в интерфейсе java.util.Spliterator
CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт spliterator, сообщая о заданном оценочном размере и дополнительных характеристиках. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
characteristics() |
Возвращает набор характеристик этого Spliterator и его элементов. |
long |
estimateSize() |
Возвращает оценку количества элементов, которые встретятся при обходе Spliterator.forEachRemaining(java.util.function.Consumer<? super T>), или возвращает Long.MAX_VALUE, если бесконечно, неизвестно или слишком дорого вычисляется. |
Spliterator |
trySplit() |
Если этот spliterator может быть разбит, возвращает Spliterator, охватывающий элементы, которые после возврата из этого метода не будут охватываться этим Spliterator. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе java.util.Spliterator
forEachRemaining, getComparator, getExactSizeIfKnown, hasCharacteristics, tryAdvance
Подробное описание конструкторов
AbstractSpliterator
protected AbstractSpliterator(long est, int additionalCharacteristics)
- Параметры:
-
est- оценочный размер этого spliterator, если известен, иначеLong.MAX_VALUE. -
additionalCharacteristics- свойства источника этого spliterator или элементов. ЕслиSIZEDсообщается, то этот spliterator дополнительно сообщитSUBSIZED.
Подробное описание методов
trySplit
public Spliterator<T> trySplit()
Если этот Spliterator является Spliterator.ORDERED, возвращаемый Spliterator должен охватывать строгий префикс элементов.
Если этот Spliterator не охватывает бесконечное число элементов, повторные вызовы trySplit() в конечном итоге должны вернуть null. При возврате не null:
- значение, указанное для
estimateSize()до разделения, должно после разделения быть больше или равноestimateSize()для этого и возвращаемого Spliterator; и - если этот Spliterator является
SUBSIZED, тоestimateSize()для этого spliterator до разделения должно быть равно суммеestimateSize()для этого и возвращаемого Spliterator после разделения.
Этот метод может вернуть null по любой причине, включая пустоту, невозможность разбить после начала обхода, ограничения структуры данных и соображения эффективности. Эта реализация допускает ограниченный параллелизм.
- Указано в:
-
trySplitв интерфейсеSpliterator<T> - Возвращает:
- a
Spliteratorохватывающий некоторую часть элементов, илиnullесли этот spliterator не может быть разделён
estimateSize
public long estimateSize()
Spliterator.forEachRemaining(java.util.function.Consumer<? super T>), или возвращает Long.MAX_VALUE, если бесконечно, неизвестно или слишком дорого вычисляется. Если этот Spliterator является Spliterator.SIZED и не был частично пройден или разделён, или этот Spliterator является 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() для данного spliterator до или между вызовами trySplit должны всегда возвращать один и тот же результат. Если Spliterator сообщает о несогласованном наборе характеристик (либо возвращенных от одного вызова, либо между множеством вызовов), никакие гарантии не могут быть даны относительно любого вычисления, использующего этот Spliterator.
- Указано в:
-
characteristicsв интерфейсеSpliterator<T> - Требования к реализации:
- Эта реализация возвращает характеристики, как сообщается при создании.
- Возвращает:
- представление характеристик
© 1993, 2023, 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.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Spliterators.AbstractSpliterator.html