Трейт scala.collection.Stepper
Степеры предназначены для создания потоков Java над коллекциями Scala, см. scala.jdk.StreamConverters. Помимо этого использования, они позволяют итерироваться по коллекциям, содержащим необработанные примитивы (например, Array[Int]) без упаковки элементов.
Степеры имеют интерфейс, похожий на итератор, с методами hasStep и nextStep(). Различие с итераторами — и причина, по которой Stepper не является подтипом Iterator — заключается в том, что существуют специализированные варианты Stepper для Int, Long и Double (IntStepper и т.д.). Это позволяет итерироваться по коллекциям, содержащим необработанные примитивы (например, массивы, scala.jdk.Accumulator), без упаковки элементов.
Выбор примитивных типов (Int, Long и Double) соответствует специализированным вариантам Java Streams (java.util.stream.Stream, java.util.stream.IntStream и т.д.) и соответствующим Java Spliterator'ам (java.util.Spliterator, java.util.Spliterator.OfInt и т.д.).
Степеры могут быть преобразованы в Scala Iterators, Java Iterators и Java Spliterators. Примитивные степеры преобразуются в соответствующие примитивные Java Iterators и Spliterators.
| Параметры типа |
|
|---|---|
| Надтипы | |
| Известные подтипы |
Абстрактные методы
Исходный код
def characteristics: Int
Возвращает набор характеристик этого степера и его элементов. См. метод characteristics в java.util.Spliterator.
Исходный код
def estimateSize: Long
Возвращает оценку числа элементов этого степера или Long.MaxValue. См. метод estimateSize в java.util.Spliterator.
Исходный код
Проверка наличия доступного элемента.
Исходный код
def javaIterator[B >: A]: Iterator[_]
Возвращает Java java.util.Iterator, соответствующий этому степеру.
Обратите внимание, что возвращаемый тип — Iterator[_] вместо Iterator[A], чтобы можно было возвращать java.util.PrimitiveIterator.OfInt (который является Iterator[Integer]) в подклассе IntStepper (который является Stepper[Int]).
Исходный код
def nextStep(): A
Возвращает следующий элемент и продвигает степер.
Исходный код
def spliterator[B >: A]: Spliterator[_]
Возвращает java.util.Spliterator, соответствующий этому степеру.
Обратите внимание, что возвращаемый тип — Spliterator[_] вместо Spliterator[A], чтобы можно было возвращать java.util.Spliterator.OfInt (который является Spliterator[Integer]) в подклассе IntStepper (который является Stepper[Int]).
Исходный код
Разделение этого степера, если применимо. Элементы текущего степера делятся между полученным степером и текущим степером.
Может вернуть null, в этом случае текущий степер возвращает те же элементы, что и раньше.
См. метод trySplit в java.util.Spliterator.
Конкретные методы
Исходный код
Возвращает Iterator, соответствующий этому степеру. Обратите внимание, что итераторы, соответствующие примитивным степерам, упаковывают элементы.
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/collection/Stepper.html