English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Scala Iterator (итератор) не является集合ом, это метод для доступа к集合у.
Два основных действия итератора it: next и hasNext.
Вызов it.next() возвращает следующий элемент итератора, а также обновляет состояние итератора.
Вызов it.hasNext() для проверки наличия элементов в наборе.
Самый простой способ позволить итератору it по очереди возвращать все элементы - это использовать цикл while:
object Test { def main(args: Array[String]) { val it = Iterator("Baidu", "Google", "w3codebox", "Taobao") while (it.hasNext){ println(it.next()) } } }
выполнить вышеуказанный код, результат вывода:
$ scalac Test.scala $ scala Test Baidu Google w3codebox Taobao
Вы можете использовать it.min и it.max Методы для поиска минимального и максимального элементов в итераторе. Пример приведен ниже:
object Test { def main(args: Array[String]) { val ita = Iterator(20, 40, 2, 50, 69, 90) val itb = Iterator(20, 40, 2, 50, 69, 90) println("Максимальный элемент: " + ita.max) println("Минимальный элемент: " + itb.min) } }
выполнить вышеуказанный код, результат вывода:
$ scalac Test.scala $ scala Test Максимальный элемент: 90 Минимальный элемент: 2
Вы можете использовать it.size или it.length Методы для просмотра количества элементов в итераторе. Пример приведен ниже:
object Test { def main(args: Array[String]) { val ita = Iterator(20, 40, 2, 50, 69, 90) val itb = Iterator(20, 40, 2, 50, 69, 90) println("значение ita.size: " + ita.size) println("значение itb.length: " + itb.length) } }
выполнить вышеуказанный код, результат вывода:
$ scalac Test.scala $ scala Test значение ita.size: 6 значение itb.length: 6
в таблице ниже перечислены常用的 методы Scala Iterator:
номер | методы и описание |
---|---|
1 | def hasNext: Boolean возврат true, если есть еще элементы, которые можно вернуть. |
2 | def next(): A возврат следующего элемента иртератора, обновление состояния итератора |
3 | def ++(that: => Iterator[A]): Iterator[A] объединить два итератора |
4 | def ++[B >: A](that :=> GenTraversableOnce[B]): Iterator[B] объединить два итератора |
5 | def addString(b: StringBuilder): StringBuilder добавить строку в StringBuilder b |
6 | def addString(b: StringBuilder, sep: String): StringBuilder добавить строку в StringBuilder b, указав разделитель |
7 | def buffered: BufferedIterator[A] преобразовать все итераторы в BufferedIterator |
8 | def contains(elem: Any): Boolean проверить, содержит ли итератор указанный элемент |
9 | def copyToArray(xs: Array[A], start: Int, len: Int): Unit передать выбранные значения из итератора в массив |
10 | def count(p: (A) => Boolean): Int возврат总数满足条件p的迭代器元素。 |
11 | def drop(n: Int): Iterator[A] возврат丢弃前n个元素的新集合 |
12 | def dropWhile(p: (A) => Boolean): Iterator[A] Отбрасывает элементы слева направо, пока условие p не станет false. |
13 | def duplicate: (Iterator[A], Iterator[A]) Генерирует два итератора, которые могут возвращает все элементы итератора. |
14 | def exists(p: (A) => Boolean): Boolean Возвращает логическое значение, указывающее, exists ли в элементах итератора элемент, satisfying условие p. |
15 | def filter(p: (A) => Boolean): Iterator[A] Возвращает новый итератор, указывающий на все элементы итератора, satisfying условие p. |
16 | def filterNot(p: (A) => Boolean): Iterator[A] Возвращает итератор, указывающий на элементы итератора, которые не satisfy условие p. |
17 | def find(p: (A) => Boolean): Option[A] Возвращает первый элемент, satisfying условие p, или None. Замечание: если найден элемент, satisfying условие, итератор будет перемещен после этого элемента; если не найден, будет перемещен в конец. |
18 | def flatMap[B](f: (A) => GenTraversableOnce[B]): Iterator[B] Применяет функцию f к каждому элементу последовательности итератора и возвращает итератор на результативную последовательность. |
19 | def forall(p: (A) => Boolean): Boolean Возвращает логическое значение, указывающее, satisfy ли все элементы it условие p. |
20 | def foreach(f: (A) => Unit): Unit Выполняет指定的 программу f на каждом элементе, возвращаемом итератором. |
21 | def hasDefiniteSize: Boolean Возвращает true, если количество элементов итератора ограничено (по умолчанию эквивалентно isEmpty). |
22 | def indexOf(elem: B): Int Возвращает первый элемент итератора с индексом equals x. Замечание: итератор перепрыгивает этот элемент. |
23 | def indexWhere(p: (A) => Boolean): Int Возвращает элемент итератора, индекс которого satisfies условие p. Замечание: итератор перепрыгивает этот элемент. |
24 | def isEmpty: Boolean Проверяет, пуст ли it, если пуст, то возвращает true,否则 false (напротив hasNext). |
25 | def isTraversableAgain: Boolean Проверяет, можно ли повторно traversed этот Iterator. |
26 | def length: Int Возвращает количество элементов итератора. |
27 | def map[B](f: (A) => B): Iterator[B] Вводит каждый элемент it в функцию f и возвращает новый итератор с результатами. |
28 | def max: A Возвращает максимальный элемент элементов итератора. |
29 | def min: A Возвращает минимальный элемент элементов итератора. |
30 | def mkString: String Преобразует все элементы итератора в строку. |
31 | def mkString(sep: String): String Преобразует все элементы итератора в строку, указав разделитель. |
32 | def nonEmpty: Boolean Проверяет, содержит ли контейнер элемент (эквивалент hasNext). |
33 | def padTo(len: Int, elem: A): Iterator[A] Сначала возвращает все элементы итератора, затем добавляет копии elem, пока длина не достигнет len. |
34 | def patch(from: Int, patchElems: Iterator[B], replaced: Int): Iterator[B] Возвращает новый итератор, в котором элементы, начиная с от element до replaced, заменены элементами итератора. |
35 | def product: A Возвращает произведение элементов числового типа, указанных итератором. |
36 | def sameElements(that: Iterator[_]): Boolean Проверяет, возвращают ли итератор и указанный итератор параметры элементы в том же порядке. |
37 | def seq: Iterator[A] Возвращает сериализованное представление набора. |
38 | def size: Int Возвращает количество элементов итератора. |
39 | def slice(from: Int, until: Int): Iterator[A] Возвращает новый итератор, который указывает на фрагмент последовательности, начинающийся с элемента, указанного from, и заканчивающийся элементом, указанным until. |
40 | def sum: A Возвращает сумму элементов числового типа, указанных итератором. |
41 | def take(n: Int): Iterator[A] Возвращает новый итератор, который содержит первые n элементов. |
42 | def toArray: Array[A] Собрать все элементы, указываемые итератором, в массив и вернуть. |
43 | def toBuffer: Buffer[B] Копировать все элементы, указываемые итератором, в буфер Buffer. |
44 | def toIterable: Iterable[A] Возвращает iterable, содержащий все элементы этого traversable или итератора. Это не завершится для бесконечных итераторов. |
45 | def toIterator: Iterator[A] Собрать все элементы итератора в контейнер Iterator и вернуть. |
46 | def toList: List[A] Собрать все элементы итератора в список и вернуть. |
47 | def toMap[T, U]: Map[T, U] Собрать все элементы пар ключ-значение итератора в контейнер Map и вернуть. |
48 | def toSeq: Seq[A] Собрать все элементы итератора в контейнер Seq и вернуть. |
49 | def toString(): String Преобразовать итератор в строку |
50 | def zip[B](that: Iterator[B]): Iterator[(A, B)] Вернуть новый итератор, который указывает на последовательность пар, соответствующих элементам двух итераторов |
Более подробную информацию можно найти в Документация API