Spec-Zone.ru › Scala 3.2

Траит Iterator.Iterator

Объект-компаньон • Исходный код

траит Iterator[+A] extends IterableOnce[A] with IterableOnceOps[A, Iterator, Iterator[A]]

Итераторы — это структуры данных, которые позволяют итерировать по последовательности элементов. У них есть метод hasNext для проверки наличия следующего элемента и метод next, который возвращает следующий элемент и перемещает итератор вперёд.

Итератор изменяемый: большинство операций над ним изменяют его состояние. Хотя его часто используют для итерации по элементам коллекции, его также можно использовать без какой-либо коллекции (см. конструкторы в объекте-компаньоне).

Важно отметить, что, если не указано иное, итератор не следует использовать после вызова метода над ним. Два самых важных исключения — это единственные абстрактные методы: next и hasNext.

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

Рассмотрим этот пример безопасного и небезопасного использования:

def f[A](it: Iterator[A]) = {
 if (it.hasNext) {            // Safe to reuse "it" after "hasNext"
   it.next()                  // Safe to reuse "it" after "next"
   val remainder = it.drop(2) // it is *not* safe to use "it" again after this line!
   remainder.take(2)          // it is *not* safe to use "remainder" after this line!
 } else it
}
Надтипы
траит IterableOnceOps[A, Iterator, Iterator[A]]
траит IterableOnce[A]
класс Object
траит Matchable
класс Any
Известные подтипы
класс AbstractIterator[A]
класс GroupedIterator[B]
класс BufferedLineIterator
класс LineIterator
класс MatchIterator
траит BufferedIterator[A]
класс Source
класс BufferedSource
Тип "self"
Iterator[A]

Классы

Исходный код
класс GroupedIterator[B >: A](self: Iterator[B], size: Int, step: Int) extends AbstractIterator[Seq[B]]

Гибкий итератор для преобразования Iterator[A] в Iterator[Seq[A]] с настраиваемым размером последовательности, шагом и стратегией обработки элементов, которые не делятся равномерно.

Типичные применения достигаются методами grouped и sliding.

Абстрактные методы

Исходный код
def hasNext: Boolean

Проверка наличия следующего элемента.

Возвращает

true если следующий элемент есть, false в противном случае

Примечание

Переиспользование: итератор остается валидным для дальнейшего использования независимо от возвращаемого результата.

Исходный код
def next(): A

Возвращает следующий элемент и перемещает итератор вперёд.

Возвращает

следующий элемент.

Исключение
NoSuchElementException

если следующего элемента нет.

Примечание

Переиспользование: Перемещает итератор, который может исчерпать элементы. Допустимо вызывать дополнительные методы над итератором.

Конкретные методы

Исходный код
final def ++[B >: A](xs: => IterableOnce[B]): Iterator[B]

Исходный код
def buffered: BufferedIterator[A]

Создаёт буферизованный итератор из этого итератора.

Возвращает

буферизованный итератор, производящий те же значения, что и этот итератор.

См. также

scala.collection.BufferedIterator

Примечание

Переиспользование: После вызова этого метода следует удалить вызываемый итератор и использовать только возвращённый. Использование старого итератора не определено, может измениться и может привести к изменениям в новом итераторе также.

Исходный код
def collect[B](pf: PartialFunction[A, B]): Iterator[B]

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

Параметры типа
B

тип элемента возвращаемого итератора.

Параметры значения
pf

частичная функция, которая фильтрует и отображает итератор.

Возвращает

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

Исходный код
def concat[B >: A](xs: => IterableOnce[B]): Iterator[B]

Исходный код
def contains(elem: Any): Boolean

Проверяет, содержит ли этот итератор данное значение в качестве элемента.

Примечание: может не завершиться для бесконечных итераторов.

Параметры значения
elem

элемент для проверки.

Возвращает

true если этот итератор производит некоторое значение, которое равно (как определяется ==) elem, false в противном случае.

Примечание

Переиспользование: После вызова этого метода следует удалить вызываемый итератор. Его использование не определено и может измениться.

Исходный код
def distinct: Iterator[A]

Создаёт новый итератор из этого, без дублирующих элементов.

Возвращает

итератор с уникальными элементами

Примечание

Переиспользование: После вызова этого метода следует удалить вызываемый итератор. Его использование не определено и может измениться.

Исходный код
def distinctBy[B](f: A => B): Iterator[A]

Создаёт новый итератор из этого, без дублирующих элементов, как определено == после применения преобразующей функции f.

Параметры типа
B

тип элементов после преобразования функцией f

Параметры значения
f

преобразующая функция, результат которой используется для определения уникальности каждого элемента

Возвращает

итератор с уникальными элементами

Примечание

Переиспользование: После вызова этого метода следует удалить вызываемый итератор. Его использование не определено и может измениться.

Исходный код
def drop(n: Int): Iterator[A]

Выбирает все элементы, кроме первых n.

Примечание: может возвращать разные результаты при разных запусках, если тип базовой коллекции не упорядочен.

Параметры значения
n

количество элементов для удаления из этого итератора.

Возвращает

итератор, состоящий из всех элементов этого итератора, кроме первых n элементов, или же пустой итератор, если в этом итераторе меньше, чем n элементов. Если n отрицательное, не удалять никаких элементов.

Исходный код
def dropWhile(p: A => Boolean): Iterator[A]

Удаляет самый длинный префикс элементов, удовлетворяющих предикату.

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

Параметры значения
p

Предикат, используемый для проверки элементов.

Возвращает

самый длинный суффикс этого итератора, первый элемент которого не удовлетворяет предикату p.

Источник
def duplicate: (Iterator[A], Iterator[A])

Создает два новых итератора, которые оба итерируются по тем же элементам, что и этот итератор (в том же порядке). Дублированные итераторы считаются равными, если они расположены на одном элементе.

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

Возвращает

пару итераторов

Примечание

Реализация может выделять временное хранилище для элементов, перебираемых одним итератором, но еще не другим.

Использование повторно: после вызова этого метода следует удалить итератор, на котором он был вызван, и использовать только возвращённые итераторы. Использование старого итератора неопределено, может измениться и может привести к изменениям в новых итераторах также.

Источник
def filter(p: A => Boolean): Iterator[A]

Выбирает все элементы этого итератора, которые удовлетворяют предикату.

Параметры значения
p

предикат, используемый для проверки элементов.

Возвращает

новый итератор, состоящий из всех элементов этого итератора, которые удовлетворяют заданному предикату p. Порядок элементов сохраняется.

Источник
def filterNot(p: A => Boolean): Iterator[A]

Выбирает все элементы этого итератора, которые не удовлетворяют предикату.

Параметры значения
pred

предикат, используемый для проверки элементов.

Возвращает

новый итератор, состоящий из всех элементов этого итератора, которые не удовлетворяют заданному предикату pred. Их порядок может быть не сохранён.

Источник
def flatMap[B](f: A => IterableOnce[B]): Iterator[B]

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

Например:

def getWords(lines: Seq[String]): Seq[String] = lines flatMap (line => line split "\\W+")

Тип результирующей коллекции определяется статическим типом итератора. Это иногда может привести к неожиданным результатам. Например:

// lettersOf will return a Seq[Char] of likely repeated letters, instead of a Set
def lettersOf(words: Seq[String]) = words flatMap (word => word.toSet)

// lettersOf will return a Set[Char], not a Seq
def lettersOf(words: Seq[String]) = words.toSet flatMap ((word: String) => word.toSeq)

// xs will be an Iterable[Int]
val xs = Map("a" -> List(11,111), "b" -> List(22,222)).flatMap(_._2)

// ys will be a Map[Int, Int]
val ys = Map("a" -> List(1 -> 11,1 -> 111), "b" -> List(2 -> 22,2 -> 222)).flatMap(_._2)
Параметры типа
B

тип элемента возвращаемой коллекции.

Параметры значения
f

функция, применяемая к каждому элементу.

Возвращает

новый итератор, полученный путём применения данной функции, принимающей значение коллекции f, к каждому элементу этого итератора и конкатенацией результатов.

Источник
def flatten[B](implicit ev: A => IterableOnce[B]): Iterator[B]

Преобразует этот итератор коллекций перебираемых элементов в итератор, образованный элементами этих перебираемых коллекций.

Тип результирующей коллекции будет определяться типом итератора. Например:

val xs = List(
           Set(1, 2, 3),
           Set(1, 2, 3)
         ).flatten
// xs == List(1, 2, 3, 1, 2, 3)

val ys = Set(
           List(1, 2, 3),
           List(3, 2, 1)
         ).flatten
// ys == Set(1, 2, 3)
Параметры типа
B

тип элементов каждой перебираемой коллекции.

Параметры значения
asIterable

явное преобразование, которое утверждает, что тип элемента этого итератора является GenTraversable.

Возвращает

новый итератор, полученный путём конкатенации всех итераторов элементов.

Источник
def grouped[B >: A](size: Int): GroupedIterator[B]

Возвращает итератор, группирующий этот итератор в блоки фиксированного размера. Примеры использования:

// Returns List(List(1, 2, 3), List(4, 5, 6), List(7)))
(1 to 7).iterator.grouped(3).toList
// Returns List(List(1, 2, 3), List(4, 5, 6))
(1 to 7).iterator.grouped(3).withPartial(false).toList
// Returns List(List(1, 2, 3), List(4, 5, 6), List(7, 20, 25)
// Illustrating that withPadding's argument is by-name.
val it2 = Iterator.iterate(20)(_ + 5)
(1 to 7).iterator.grouped(3).withPadding(it2.next).toList
Примечание

Использование повторно: после вызова этого метода, следует удалить итератор, на котором он был вызван, и использовать только возвращенный итератор. Использование старого итератора не определено, может измениться, и может привести к изменениям в новом итераторе также.

Источник
def indexOf[B >: A](elem: B): Int

Возвращает индекс первого вхождения указанного объекта в этот объект итерабельного объекта.

Примечание: может не завершиться для бесконечных итераторов.

Параметры значения
elem

элемент для поиска.

Возвращает

индекс первого вхождения elem в значениях, производимых этим итератором, или -1, если такой элемент не существует до достижения конца итератора.

Примечание

Использование повторно: после вызова этого метода, следует удалить итератор, на котором он был вызван. Его использование не определено и может измениться.

Источник
def indexOf[B >: A](elem: B, from: Int): Int

Возвращает индекс первого вхождения указанного объекта в этот объект итерабельного объекта после или на некотором начальном индексе.

Примечание: может не завершиться для бесконечных итераторов.

Параметры значения
elem

элемент для поиска.

from

начальный индекс

Возвращает

индекс >= from первого вхождения elem в значениях, производимых этим итератором, или -1, если такой элемент не существует до достижения конца итератора.

Примечание

Использование повторно: после вызова этого метода, следует удалить итератор, на котором он был вызван. Его использование не определено и может измениться.

Источник
def indexWhere(p: A => Boolean, from: Int): Int

Источник
override def isEmpty: Boolean

Проверяет, пуст ли итератор.

Примечание: Реализации в подклассах, которые не являются многократно перебираемыми, должны позаботиться о том, чтобы не потреблять какие-либо элементы, когда isEmpty вызывается.

Возвращает

true если итератор не содержит элементов, false в противном случае.

Классы определения IterableOnceOps

Источник
final def iterator: Iterator[A]

Итератор может быть использован только один раз

Источник
final def length: Int

Источник
def map[B](f: A => B): Iterator[B]

Строит новый итератор, применяя функцию ко всем элементам этого итератора.

Параметры типа
B

тип элемента возвращаемого итератора.

Параметры значения
f

функция, применяемая к каждому элементу.

Возвращает

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

Источник
def nextOption(): Option[A]

Оборачивает значение next() в опцию.

Возвращает

Some(next) если следующий элемент существует, None в противном случае.

Source
def padTo[B >: A](len: Int, elem: B): Iterator[B]

Копия этого итератора с добавленными элементами со значением, пока не будет достигнута заданная целевая длина.

Параметры типа
B

тип элементов возвращаемого итератора.

Параметры значения
elem

значение для заполнения

len

целевая длина

Возвращает

новый итератор, состоящий из всех элементов этого итератора, за которым следует минимальное количество вхождений elem, так что полученная коллекция имеет длину не менее len.

Source
def partition(p: A => Boolean): (Iterator[A], Iterator[A])

Разделяет этот итератор на два итератора в соответствии с предикатом.

Параметры значения
p

предикат для разделения

Возвращает

пара итераторов: итератор, удовлетворяющий предикату p, и итератор, который не удовлетворяет. Относительный порядок элементов в результирующих итераторах такой же, как в исходном итераторе.

Примечание

Использование: после вызова этого метода нужно удалить итератор, на котором он был вызван, и использовать только возвращенные итераторы. Использование старого итератора не определено, может быть изменено и может привести к изменениям в новых итераторах.

Source
def patch[B >: A](from: Int, patchElems: Iterator[B], replaced: Int): Iterator[B]

Возвращает этот итератор со значениями, замененными (патч). Замена по отрицательным индексам — то же самое, что замена, начинающаяся с 0. Замена по индексам, равным или большим длины исходного итератора, добавляет патч в конец. Если заменяется больше значений, чем фактически существует, избыток игнорируется.

Параметры значения
from

Начальный индекс для замены

patchElems

Итератор значений патча

replaced

Количество значений в исходном итераторе, которые заменяются патчем.

Примечание

Использование: после вызова этого метода следует удалить итератор, на котором он был вызван, а также переданный в качестве параметра итератор, и использовать только возвращенный итератор. Использование старых итераторов не определено, может быть изменено и может привести к изменениям в новом итераторе.

Source
def sameElements[B >: A](that: IterableOnce[B]): Boolean

Проверяет, равны ли соответствующие элементы заданной итерируемой коллекции (относительно ==) элементам этого итератора.

Параметры типа
B

тип элементов коллекции that.

Параметры значения
that

коллекция для сравнения

Возвращает

true если обе коллекции содержат одинаковые элементы в том же порядке, false в противном случае. <invalid inheritdoc annotation>

Source
def scanLeft[B](z: B)(op: (B, A) => B): Iterator[B]

Создаёт итератор, содержащий кумулятивные результаты применения оператора слева направо, включая начальное значение.

Примечание: не завершится для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Параметры типа
B

тип элементов в результирующей коллекции

Параметры значения
op

бинарный оператор, применяемый к промежуточному результату и элементу

z

начальное значение

Возвращает

коллекция с промежуточными результатами

Source
def slice(from: Int, until: Int): Iterator[A]

Выбирает интервал элементов. Возвращаемый итератор состоит из всех элементов x, которые удовлетворяют инварианту:

from <= indexOf(x) < until

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Параметры значения
from

наименьший индекс для включения из этого итератора.

until

наименьший индекс для ИСКЛЮЧЕНИЯ из этого итератора.

Возвращает

итератор, содержащий элементы, большие или равные индексу from, простирающийся до (но не включая) индекса until этого итератора.

Исходный код
def sliding[B >: A](size: Int, step: Int): GroupedIterator[B]

Возвращает итератор, представляющий «скользящее окно» представления этого итератора. Первый аргумент — размер окна, а второй аргумент step — на сколько сдвигать окно на каждой итерации. step по умолчанию 1.

Возвращаемый GroupedIterator может быть настроен для заполнения частичного результата до размера size или полного подавления частичного результата.

Примеры использования:

// Returns List(ArraySeq(1, 2, 3), ArraySeq(2, 3, 4), ArraySeq(3, 4, 5))
(1 to 5).iterator.sliding(3).toList
// Returns List(ArraySeq(1, 2, 3, 4), ArraySeq(4, 5))
(1 to 5).iterator.sliding(4, 3).toList
// Returns List(ArraySeq(1, 2, 3, 4))
(1 to 5).iterator.sliding(4, 3).withPartial(false).toList
// Returns List(ArraySeq(1, 2, 3, 4), ArraySeq(4, 5, 20, 25))
// Illustrating that withPadding's argument is by-name.
val it2 = Iterator.iterate(20)(_ + 5)
(1 to 5).iterator.sliding(4, 3).withPadding(it2.next).toList
Параметры значения
size

количество элементов в группе

step

расстояние между первыми элементами последовательных групп

Возвращает

A GroupedIterator, производящий Seq[B] размером size, за исключением последнего элемента (который может быть единственным элементом), который будет усечен, если оставшихся элементов для группировки меньше, чем size. Это поведение может быть настроено.

Примечание

Переиспользование: После вызова этого метода необходимо удалить итератор, на котором он был вызван, и использовать только возвращённый итератор. Использование старого итератора не определено, может измениться и может привести к изменениям в новом итераторе.

Исходный код
def span(p: A => Boolean): (Iterator[A], Iterator[A])

Разделяет этот итератор на пару префикс/суффикс в соответствии с предикатом.

Примечание: c span p эквивалентно (но, возможно, более эффективно, чем) (c takeWhile p, c dropWhile p), при условии, что вычисление предиката p не вызывает побочных эффектов.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Примечание

Переиспользование: После вызова этого метода необходимо удалить итератор, на котором он был вызван, и использовать только возвращенные итераторы. Использование старого итератора не определено, может измениться и может привести к изменениям в новых итераторах.

Исходный код
def take(n: Int): Iterator[A]

Выбирает первые n элементов.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Параметры значения
n

количество элементов, которые нужно взять из этого итератора.

Возвращает

итератор, состоящий только из первых n элементов этого итератора, или же весь итератор, если у него меньше, чем n элементов. Если n отрицательно, возвращает пустой итератор.

Исходный код
def takeWhile(p: A => Boolean): Iterator[A]

Берет самый длинный префикс элементов, которые удовлетворяют предикату.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Параметры значения
p

Предикат, используемый для проверки элементов.

Возвращает

самый длинный префикс этого итератора, чьи элементы все удовлетворяют предикату p.

Исходный код
override def tapEach[U](f: A => U): Iterator[A]

Применяет функцию со побочным эффектом к каждому элементу в этом наборе. Строгие наборы будут применять f к своим элементам немедленно, в то время как ленивые наборы, такие как Views и LazyLists, будут применять f только к каждому элементу, если и когда этот элемент будет вычисляться, и каждый раз, когда этот элемент вычисляется.

Параметры типа
U

тип возвращаемого значения f

Параметры значения
f

функция, которая применяется к каждому элементу в этом итераторе

Возвращает

тот же логический набор, что и этот

Определяющие классы IterableOnceOps

Исходный код
override def toString: String

Преобразует этот итератор в строку.

Возвращает

"<iterator>"

Примечание

Повторное использование: итератор остается допустимым для дальнейшего использования, независимо от возвращаемого результата.

Определяющие классы Any

Исходный код
def withFilter(p: A => Boolean): Iterator[A]

Создаёт итератор по всем элементам этого итератора, удовлетворяющим предикату p. Порядок элементов сохраняется.

Примечание: withFilter эквивалентно filter для итераторов. Оно существует для того, чтобы выражения for с фильтрами работали с итераторами.

Параметры значения
p

предикат, используемый для проверки значений.

Возвращает

итератор, который генерирует те значения из этого итератора, которые удовлетворяют предикату p.

Примечание

Повторное использование: после вызова этого метода следует удалить итератор, на котором он был вызван, и использовать только возвращённый итератор. Использование старого итератора не определено, может быть изменено и может привести к изменениям в новом итераторе.

Исходный код
def zip[B](that: IterableOnce[B]): Iterator[(A, B)]

Исходный код
def zipAll[A1 >: A, B](that: IterableOnce[B], thisElem: A1, thatElem: B): Iterator[(A1, B)]

Исходный код
def zipWithIndex: Iterator[(A, Int)]

Объединяет этот итератор с его индексами.

Возвращает

Новый итератор, содержащий пары, состоящие из всех элементов этого итератора, соединённых с их индексом. Индексы начинаются с 0.

Пример

List("a", "b", "c").zipWithIndex == List(("a", 0), ("b", 1), ("c", 2))

Наследуемые методы

Исходный код
final def addString(b: StringBuilder): StringBuilder

Добавляет все элементы этого набора в строковый буфер. Записанный текст состоит из строковых представлений (относительно метода toString) всех элементов этого набора без разделителя.

Пример:

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = new StringBuilder()
b: StringBuilder =

scala> val h = a.addString(b)
h: StringBuilder = 1234
Параметры значения
b

строковый буфер, в который добавляются элементы.

Возвращает

строковый буфер b, в который были добавлены элементы.

Наследуется от IterableOnceOps

Исходный код
final def addString(b: StringBuilder, sep: String): StringBuilder

Добавляет все элементы этого набора в строковый буфер с помощью разделительной строки. Записанный текст состоит из строковых представлений (относительно метода toString) всех элементов этого набора, разделенных строкой sep.

Пример:

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = new StringBuilder()
b: StringBuilder =

scala> a.addString(b, ", ")
res0: StringBuilder = 1, 2, 3, 4
Параметры значения
b

строковый буфер, в который добавляются элементы.

sep

разделительная строка.

Возвращает

строковый буфер b, в который были добавлены элементы.

Наследуется от IterableOnceOps

Исходный код
def addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder

Добавляет все элементы этого набора в строковый буфер с помощью начальной, конечной и разделительной строк. Записанный текст начинается со строки start и заканчивается строкой end. Внутри строковые представления (относительно метода toString) всех элементов этого набора разделяются строкой sep.

Пример:

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = new StringBuilder()
b: StringBuilder =

scala> a.addString(b , "List(" , ", " , ")")
res5: StringBuilder = List(1, 2, 3, 4)
Параметры значения
b

строковый буфер, в который добавляются элементы.

end

конечная строка.

sep

разделительная строка.

start

начальная строка.

Возвращает

строковый буфер b, в который были добавлены элементы.

Наследуется от IterableOnceOps

Исходный код
def collectFirst[B](pf: PartialFunction[A, B]): Option[B]

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

Примечание: может не завершиться для наборов бесконечного размера.

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

Параметры значения
pf

частичная функция

Возвращает

значение типа Option, содержащее результат применения pf к первому значению, для которого она определена, или None если такового не существует.

Пример

Seq("a", 1, 5L).collectFirst({ case x: Int => x*10 }) = Some(10)

Наследуется от IterableOnceOps

Исходный код
def copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Int

Копирует элементы в массив, возвращая количество скопированных элементов.

Заполняет заданный массив xs начиная с индекса start не более чем len элементами этого набора.

Копирование прекратится, как только будут скопированы все элементы этого набора, или будет достигнут конец массива, или len элементов будут скопированы.

Параметры типа
B

тип элементов массива.

Параметры значения
len

максимальное количество копируемых элементов.

start

начальный индекс xs.

xs

массив для заполнения.

Возвращает

количество элементов, записанных в массив

Примечание

Повторное использование: после вызова этого метода следует удалить итератор, на котором он был вызван. Использование его не определено и может быть изменено.

Наследуется от IterableOnceOps

Исходный код
def copyToArray[B >: A](xs: Array[B], start: Int): Int

Копирует элементы в массив, возвращая количество скопированных элементов.

Заполняет заданный массив xs начиная с индекса start значениями из этого набора.

Копирование прекратится, как только будут скопированы все элементы этого набора или будет достигнут конец массива.

Параметры типа
B

тип элементов массива.

Параметры значения
start

начальный индекс xs.

xs

массив для заполнения.

Возвращает

количество элементов, записанных в массив

Примечание

Повторное использование: После вызова этого метода следует отбросить итератор, на котором он был вызван. Его использование неопределенно и может быть изменено.

Унаследовано от IterableOnceOps

Источник
def copyToArray[B >: A](xs: Array[B]): Int

Копирует элементы в массив, возвращая количество скопированных элементов.

Заполняет заданный массив xs начиная с индекса start значениями этой коллекции.

Копирование прекратится, когда будут скопированы все элементы этой коллекции или будет достигнут конец массива.

Параметры типа
B

тип элементов массива.

Параметры значения
xs

массив для заполнения.

Возвращает

количество элементов, записанных в массив

Примечание

Повторное использование: После вызова этого метода следует отбросить итератор, на котором он был вызван. Его использование неопределенно и может быть изменено.

Унаследовано от IterableOnceOps

Источник
def corresponds[B](that: IterableOnce[B])(p: (A, B) => Boolean): Boolean

Проверяет, удовлетворяет ли каждый элемент итератора этой коллекции соответствующему элементу другой коллекции, удовлетворяя условию предиката.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

тип элементов that

Параметры значения
p

предикат, связывающий элементы обеих коллекций

that

другая коллекция

Возвращает

true если обе коллекции имеют одинаковую длину и p(x, y) является true для всех соответствующих элементов x этого итератора и y that, в противном случае false

Унаследовано от IterableOnceOps

Источник
def count(p: A => Boolean): Int

Подсчитывает количество элементов в коллекции, удовлетворяющих предикату.

Примечание: не завершится для коллекций бесконечного размера.

Параметры значения
p

предикат, используемый для проверки элементов.

Возвращает

количество элементов, удовлетворяющих предикату p.

Унаследовано от IterableOnceOps

Источник
def exists(p: A => Boolean): Boolean

Проверяет, выполняется ли предикат хотя бы для одного элемента этой коллекции.

Примечание: может не завершиться для коллекций бесконечного размера.

Параметры значения
p

предикат, используемый для проверки элементов.

Возвращает

true если заданный предикат p выполняется хотя бы для одного элемента этой коллекции, в противном случае false

Унаследовано от IterableOnceOps

Источник
def find(p: A => Boolean): Option[A]

Находит первый элемент коллекции, удовлетворяющий предикату, если таковой существует.

Примечание: может не завершиться для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Параметры значения
p

предикат, используемый для проверки элементов.

Возвращает

значение типа Option, содержащее первый элемент в коллекции, удовлетворяющий p, или None, если такового нет.

Унаследовано от IterableOnceOps

Источник
def fold[A1 >: A](z: A1)(op: (A1, A1) => A1): A1

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

Порядок выполнения операций над элементами не определён и может быть не детерминированным.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
A1

параметр типа для бинарного оператора, являющийся надтипом A.

Параметры значения
op

бинарный оператор, который должен быть ассоциативным.

z

нейтральный элемент для операции fold; может быть добавлен к результату произвольное количество раз и не должен изменять результат (например, Nil для конкатенации списков, 0 для сложения или 1 для умножения).

Возвращает

результат применения оператора fold op между всеми элементами и z, или z, если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def foldLeft[B](z: B)(op: (B, A) => B): B

Применяет бинарный оператор к начальному значению и всем элементам этой коллекции слева направо.

Примечание: не завершится для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если базовый тип коллекции упорядочен или оператор ассоциативен и коммутативен.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

z

начальное значение.

Возвращает

результат вставки op между последовательными элементами этой коллекции слева направо с начальным значением z слева: op(...op(z, x1), x2, ..., xn), где x1, ..., xn — элементы этой коллекции. Возвращает z, если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def foldRight[B](z: B)(op: (A, B) => B): B

Применяет бинарный оператор ко всем элементам этой коллекции и начальному значению, идя справа налево.

Примечание: не завершится для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если базовый тип коллекции упорядочен или оператор ассоциативен и коммутативен.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

z

начальное значение.

Возвращает

результат вставки op между последовательными элементами этой коллекции справа налево с начальным значением z справа: op(x1, op(x2, ... op(xn, z)...)), где x1, ..., xn — элементы этой коллекции. Возвращает z, если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def forall(p: A => Boolean): Boolean

Проверяет, выполняется ли предикат для всех элементов этой коллекции.

Примечание: может не завершиться для коллекций бесконечного размера.

Параметры значения
p

предикат, используемый для проверки элементов.

Возвращает

true, если эта коллекция пуста или заданный предикат p выполняется для всех элементов этой коллекции, в противном случае false.

Унаследовано от IterableOnceOps

Source
def foreach[U](f: A => U): Unit

Применить f к каждому элементу для его побочных эффектов. Примечание: параметр [U] необходим для помощи в инференции типов scalac.

Inherited from IterableOnceOps

Source
def isTraversableAgain: Boolean

Проверяет, может ли эта коллекция быть многократно пройдена. Всегда истинно для Iterables и ложно для Iterators, если не переопределено.

Возвращает

true если она многократно проходима, false в противном случае.

Inherited from IterableOnceOps

Source
def knownSize: Int

Возвращает

Количество элементов в этой коллекции, если его можно вычислить недорого, -1 в противном случае. Недорого обычно означает: не требует прохода по коллекции.

Inherited from IterableOnce

Source
def max[B >: A](implicit ord: Ordering[B]): A

Находит наибольший элемент.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определено упорядочение.

Параметры значения
ord

Упорядочение, используемое для сравнения элементов.

Возвращает

наибольший элемент этой коллекции относительно упорядочения ord.

Исключение
UnsupportedOperationException

если эта коллекция пуста.

Inherited from IterableOnceOps

Source
def maxBy[B](f: A => B)(implicit cmp: Ordering[B]): A

Находит первый элемент, который дает наибольшее значение, измеряемое функцией f.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип результата функции f.

Параметры значения
cmp

Упорядочение, используемое для сравнения элементов.

f

Функция измерения.

Возвращает

первый элемент этой коллекции с наибольшим значением, измеренным функцией f, относительно упорядочения cmp.

Исключение
UnsupportedOperationException

если эта коллекция пуста.

Inherited from IterableOnceOps

Source
def maxByOption[B](f: A => B)(implicit cmp: Ordering[B]): Option[A]

Находит первый элемент, который дает наибольшее значение, измеряемое функцией f.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип результата функции f.

Параметры значения
cmp

Упорядочение, используемое для сравнения элементов.

f

Функция измерения.

Возвращает

значение-опцию, содержащую первый элемент этой коллекции с наибольшим значением, измеренным функцией f, относительно упорядочения cmp.

Inherited from IterableOnceOps

Source
def maxOption[B >: A](implicit ord: Ordering[B]): Option[A]

Находит наибольший элемент.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определяется упорядочение.

Параметры значения
ord

Упорядочение, используемое для сравнения элементов.

Возвращает

значение типа option, содержащее наибольший элемент этой коллекции относительно упорядочения ord.

Унаследовано от IterableOnceOps

Источник
def min[B >: A](implicit ord: Ordering[B]): A

Находит наименьший элемент.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определяется упорядочение.

Параметры значения
ord

Упорядочение, используемое для сравнения элементов.

Возвращает

наименьший элемент этой коллекции относительно упорядочения ord.

Выбрасывает
UnsupportedOperationException

если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def minBy[B](f: A => B)(implicit cmp: Ordering[B]): A

Находит первый элемент, который возвращает наименьшее значение, измеренное функцией f.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип результата функции f.

Параметры значения
cmp

Упорядочение, используемое для сравнения элементов.

f

Функция измерения.

Возвращает

первый элемент этой коллекции с наименьшим значением, измеренным функцией f, относительно упорядочения cmp.

Выбрасывает
UnsupportedOperationException

если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def minByOption[B](f: A => B)(implicit cmp: Ordering[B]): Option[A]

Находит первый элемент, который возвращает наименьшее значение, измеренное функцией f.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип результата функции f.

Параметры значения
cmp

Упорядочение, используемое для сравнения элементов.

f

Функция измерения.

Возвращает

значение типа option, содержащее первый элемент этой коллекции с наименьшим значением, измеренным функцией f, относительно упорядочения cmp.

Унаследовано от IterableOnceOps

Источник
def minOption[B >: A](implicit ord: Ordering[B]): Option[A]

Находит наименьший элемент.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определяется упорядочение.

Параметры значения
ord

Упорядочение, используемое для сравнения элементов.

Возвращает

значение типа option, содержащее наименьший элемент этой коллекции относительно упорядочения ord.

Унаследовано от IterableOnceOps

Источник
final def mkString: String

Отображает все элементы этой коллекции в строке.

Делегирует addString, который может быть переопределён.

Возвращает

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

Унаследовано от IterableOnceOps

Источник
final def mkString(sep: String): String

Отображает все элементы этого набора в строку с использованием разделительной строки.

Делегирует addString, который может быть переопределен.

Параметры значения
sep

разделительная строка.

Возвращает

строковое представление этого набора. В результирующей строке строковые представления (относительно метода toString) всех элементов этого набора разделены строкой sep.

Пример

List(1, 2, 3).mkString("|") = "1|2|3"

Унаследовано от IterableOnceOps

Источник
final def mkString(start: String, sep: String, end: String): String

Отображает все элементы этого набора в строку, используя начальную, конечную и разделительные строки.

Делегирует addString, который может быть переопределен.

Параметры значения
end

конечная строка.

sep

разделительная строка.

start

начальная строка.

Возвращает

строковое представление этого набора. Результирующая строка начинается со строки start и заканчивается строкой end. Внутри, строковые представления (относительно метода toString) всех элементов этого набора разделены строкой sep.

Пример

List(1, 2, 3).mkString("(", "; ", ")") = "(1; 2; 3)"

Унаследовано от IterableOnceOps

Источник
def nonEmpty: Boolean

Проверяет, не пуст ли набор.

Возвращает

true если набор содержит по крайней мере один элемент, false в противном случае.

Унаследовано от IterableOnceOps

Источник
def product[B >: A](implicit num: Numeric[B]): B

Перемножает элементы этого набора.

Примечание: не будет завершаться для наборов бесконечного размера.

Параметры типа
B

тип результата оператора *.

Параметры значения
num

неявный параметр, определяющий набор числовых операций, который включает оператор * для использования при формировании произведения.

Возвращает

произведение всех элементов этого набора относительно оператора * в num.

Унаследовано от IterableOnceOps

Источник
def reduce[B >: A](op: (B, B) => B): B

Сводит элементы этого набора, используя указанный ассоциативный бинарный оператор.

Порядок выполнения операций над элементами не определён и может быть не детерминированным.

Параметры типа
B

Параметр типа для бинарного оператора, обобщающий A.

Параметры значения
op

Бинарный оператор, который должен быть ассоциативным.

Возвращает

Результат применения оператора reduce op между всеми элементами, если набор не пустой.

Исключения
UnsupportedOperationException

если этот набор пуст.

Унаследовано от IterableOnceOps

Источник
def reduceLeft[B >: A](op: (B, A) => B): B

Применяет бинарный оператор ко всем элементам этого набора, слева направо.

Примечание: не будет завершаться для наборов бесконечного размера.

Примечание: может возвращать разные результаты при разных запусках, если тип базового набора не упорядочен или оператор не является ассоциативным и коммутативным.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

Возвращает

результат вставки op между последовательными элементами этого набора, слева направо: op( op( ... op(x1, x2) ..., xn-1), xn) где x1, ..., xn являются элементами этого набора.

Исключения
UnsupportedOperationException

если этот набор пуст.

Унаследовано от IterableOnceOps

Источник
def reduceLeftOption[B >: A](op: (B, A) => B): Option[B]

Возможно применяет бинарный оператор ко всем элементам этого набора, слева направо.

Примечание: не будет завершаться для наборов бесконечного размера.

Примечание: может возвращать разные результаты при разных запусках, если тип базового набора не упорядочен или оператор не является ассоциативным и коммутативным.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

Возвращает

значение Option, содержащее результат reduceLeft(op) если этот набор не пуст, None в противном случае.

Унаследовано от IterableOnceOps

Источник
def reduceOption[B >: A](op: (B, B) => B): Option[B]

Сводит элементы этого набора, если таковые имеются, с использованием указанного ассоциативного бинарного оператора.

Порядок выполнения операций над элементами не определён и может быть не детерминированным.

Параметры типа
B

Параметр типа для бинарного оператора, надтип A.

Параметры значения
op

Бинарный оператор, который должен быть ассоциативным.

Возвращает

Значение Option, содержащее результат применения оператора reduce op ко всем элементам, если набор не пуст, и None в противном случае.

Унаследовано от IterableOnceOps

Источник
def reduceRight[B >: A](op: (A, B) => B): B

Применяет бинарный оператор ко всем элементам этого набора, справа налево.

Примечание: не будет завершаться для наборов бесконечного размера.

Примечание: может возвращать разные результаты при разных запусках, если тип базового набора не упорядочен или оператор не является ассоциативным и коммутативным.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

Возвращает

результат вставки op между последовательными элементами этого набора, справа налево: op(x1, op(x2, ..., op(xn-1, xn)...)) где x1, ..., xn являются элементами этого набора.

Исключения
UnsupportedOperationException

если этот набор пуст.

Унаследовано от IterableOnceOps

Источник
def reduceRightOption[B >: A](op: (A, B) => B): Option[B]

Возможно применяет бинарный оператор ко всем элементам этого набора, справа налево.

Примечание: не будет завершаться для наборов бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен или оператор ассоциативен и коммутативен.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

Возвращает

значение варианта, содержащее результат reduceRight(op), если эта коллекция непуста, None в противном случае.

Унаследовано от IterableOnceOps

Источник
protected def reversed: Iterable[A]

Унаследовано от IterableOnceOps

Источник
def size: Int

Размер этой коллекции.

Примечание: не завершится для коллекций бесконечного размера.

Возвращает

количество элементов в этой коллекции.

Унаследовано от IterableOnceOps

Источник
def splitAt(n: Int): (C, C)

Разделяет эту коллекцию на пару префикс/суффикс в заданной позиции.

Примечание: c splitAt n эквивалентно (но, возможно, более эффективно, чем) (c take n, c drop n).

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции упорядочен.

Параметры значения
n

позиция, в которой нужно разделить.

Возвращает

пара коллекций, состоящая из первых n элементов этой коллекции и других элементов.

Унаследовано от IterableOnceOps

Источник
def stepper[S <: Stepper[_]](implicit shape: StepperShape[A, S]): S

Возвращает scala.collection.Stepper для элементов этой коллекции.

Stepper позволяет создавать Java-поток для работы с коллекцией, см. scala.jdk.StreamConverters. Для коллекций, содержащих примитивные значения, Stepper может использоваться в качестве итератора, который не упаковывает элементы.

Неявный параметр scala.collection.StepperShape определяет тип результирующего Stepper в соответствии с типом элемента этой коллекции.

  • Для коллекций Int, Short, Byte или Char, возвращается scala.collection.IntStepper

  • Для коллекций Double или Float, возвращается scala.collection.DoubleStepper

  • Для коллекций Long, возвращается scala.collection.LongStepper

  • Для любого другого типа элементов возвращается scala.collection.AnyStepper

Обратите внимание, что этот метод переопределен в подклассах, и тип возвращаемого значения уточняется до S with EfficientSplit, например scala.collection.IndexedSeqOps.stepper. Для Steppers, помеченных scala.collection.Stepper.EfficientSplit, конвертеры в scala.jdk.StreamConverters позволяют создавать параллельные потоки, в то время как обычные Steppers могут быть преобразованы только в последовательные потоки.

Унаследовано от IterableOnce

Источник
def sum[B >: A](implicit num: Numeric[B]): B

Суммирует элементы этой коллекции.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

тип результата + оператора.

Параметры значения
num

неявный параметр, определяющий набор операций с числами, которые включают + оператор, используемый при формировании суммы.

Возвращает

сумма всех элементов этой коллекции относительно + оператора в num.

Унаследовано от IterableOnceOps

Источник
def to[C1](factory: Factory[A, C1]): C1

Учитывая фабрику коллекций factory, преобразовать эту коллекцию в соответствующее представление для текущего типа элемента A. Примеры использования:

xs.to(List) xs.to(ArrayBuffer) xs.to(BitSet) // для xs: Iterable[Int]

Унаследовано от IterableOnceOps

Источник
def toArray[B >: A : ClassTag]: Array[B]

Преобразование коллекции в массив.

Примечание к реализации: НЕ вызывать Array.from из этого метода.

Унаследовано от IterableOnceOps

Источник
final def toBuffer[B >: A]: Buffer[B]

Унаследовано от IterableOnceOps

Источник
def toIndexedSeq: IndexedSeq[A]

Унаследовано от IterableOnceOps

Источник
def toList: List[A]

Унаследовано от IterableOnceOps

Источник
def toMap[K, V](implicit ev: A <:< (K, V)): Map[K, V]

Унаследовано от IterableOnceOps

Источник
def toSeq: Seq[A]

Возвращает

Эта коллекция в виде Seq[A]. Это эквивалентно to(Seq), но может быть быстрее.

Унаследовано от IterableOnceOps

Источник
def toSet[B >: A]: Set[B]

Унаследовано от IterableOnceOps

Источник
def toVector: Vector[A]

Унаследовано от IterableOnceOps

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/collection/Iterator.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API