English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Iterator (iterador) de Scala

Conjuntos de Scala

Scala Iterator (iterador) no es una colección, es un método para acceder a la colección.

Las dos operaciones básicas del iterador it son next y hasNext.

invocar it.next() devolverá el siguiente elemento del iterador y actualizará el estado del iterador.

invocar it.hasNext() para detectar si hay más elementos en la colección.

La forma más sencilla de que el iterador it devuelva todos los elementos individualmente es usar un ciclo while:

object Test {
   def main(args: Array[String]) {
      val it = Iterator("Baidu", "Google", "w3codebox", "Taobao")
      
      while (it.hasNext){
         println(it.next())
      }
   }
}

ejecutar el código anterior, el resultado de salida es:

$ scalac Test.scala 
$ scala Test
Baidu
Google
w3codebox
Taobao

buscar elementos máximos y mínimos

puedes usar it.min y it.max El método busca los elementos máximos y mínimos en el iterador, ejemplo a continuación:

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("el elemento más grande es: " + ita.max)
      println("el elemento más pequeño es: " + itb.min)
   }
}

ejecutar el código anterior, el resultado de salida es:

$ scalac Test.scala 
$ scala Test
el elemento más grande es:90
el elemento más pequeño es:2

para obtener la longitud del iterador

puedes usar it.size o it.length métodos para ver la cantidad de elementos en el iterador. Ejemplo a continuación:

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("el valor de ita.size: " + ita.size)
      println("el valor de itb.length: " + itb.length)
   }
}

ejecutar el código anterior, el resultado de salida es:

$ scalac Test.scala 
$ scala Test
el valor de ita.size: 6
el valor de itb.length: 6

métodos comunes de Scala Iterator

la siguiente tabla enumera los métodos comunes de Scala Iterator:

número de seriemétodos y descripciones
1

def hasNext: Boolean

si hay más elementos que devolver, devolver true.

2

def next(): A

devolver el siguiente elemento del iterador y actualizar el estado del iterador

3

def ++(that: => Iterator[A]): Iterator[A]

combinar dos iteradores

4

def ++[B >: A](that :=> GenTraversableOnce[B]): Iterator[B]

combinar dos iteradores

5

def addString(b: StringBuilder): StringBuilder

agregar una cadena a StringBuilder b

6

def addString(b: StringBuilder, sep: String): StringBuilder

agregar una cadena a StringBuilder b, y especificar el separador

7

def buffered: BufferedIterator[A]

todos los iteradores se convierten en BufferedIterator

8

def contains(elem: Any): Boolean

detectar si el iterador contiene el elemento especificado

9

def copyToArray(xs: Array[A], start: Int, len: Int): Unit

Transfiere los valores seleccionados del iterador a un array

10

def count(p: (A) => Boolean): Int

Devuelve el número total de elementos del iterador que satisfacen la condición p.

11

def drop(n: Int): Iterator[A]

Devuelve un nuevo conjunto con los n primeros elementos descartados

12

def dropWhile(p: (A) => Boolean): Iterator[A]

Descarta elementos de izquierda a derecha hasta que la condición p no se cumpla

13

def duplicate: (Iterator[A], Iterator[A])

Genera dos iteradores que pueden devolver todos los elementos del iterador.

14

def exists(p: (A) => Boolean): Boolean

Devuelve un valor booleano que indica si existe algún elemento en el iterador que satisfaga p.

15

def filter(p: (A) => Boolean): Iterator[A]

Devuelve un nuevo iterador que apunta a todos los elementos del iterador que satisfacen la condición p.

16

def filterNot(p: (A) => Boolean): Iterator[A]

Devuelve un iterador que apunta a los elementos del iterador que no satisfacen la condición p.

17

def find(p: (A) => Boolean): Option[A]

Devuelve el primer elemento que satisface p o None. Nota: si se encuentra un elemento que satisface la condición, el iterador se colocará después de este elemento; si no se encuentra, se colocará en el final.

18

def flatMap[B](f: (A) => GenTraversableOnce[B]): Iterator[B]

Aplica la función f a cada elemento de la secuencia del iterador y devuelve un iterador apuntando a la secuencia de resultados.

19

def forall(p: (A) => Boolean): Boolean

Devuelve un valor booleano que indica si todos los elementos a los que apunta it satisfacen p.

20

def foreach(f: (A) => Unit): Unit

Ejecuta el programa especificado f en cada elemento devuelto por el iterador

21

def hasDefiniteSize: Boolean

Devuelve true si el número de elementos del iterador es finito (por defecto es equivalente a isEmpty)

22

def indexOf(elem: B): Int

Devuelve el primer elemento del iterador que tiene el índice igual a x. Nota: el iterador pasará por encima de este elemento.

23

def indexWhere(p: (A) => Boolean): Int

Devuelve los elementos del iterador que satisfacen la condición p. Nota: el iterador pasará por encima de este elemento.

24

def isEmpty: Boolean

Verifica si it está vacío, devuelve true si está vacío, de lo contrario devuelve false (opuesto a hasNext)

25

def isTraversableAgain: Boolean

Prueba si este Iterator se puede recorrer repetidamente

26

def length: Int

Devuelve el número de elementos del iterador

27

def map[B](f: (A) => B): Iterator[B]

Toma cada elemento de it y genera un nuevo iterador con los resultados después de pasarlos al función f

28

def max: A

Devuelve el elemento más grande de los elementos del iterador

29

def min: A

Devuelve el elemento más pequeño de los elementos del iterador

30

def mkString: String

Convierte todos los elementos del iterador en una cadena

31

def mkString(sep: String): String

Convierte todos los elementos del iterador en una cadena y especifica el separador

32

def nonEmpty: Boolean

Verifica si el contenedor contiene un elemento (equivalente a hasNext)

33

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

Primero devuelve todos los elementos del iterador, luego agrega copias de elem hasta que la longitud sea len

34

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

Devuelve un nuevo iterador donde los replaced elementos desde el elemento nth son reemplazados por los elementos del iterador

35

def product: A

Devuelve el producto de los elementos numéricos del iterador

36

def sameElements(that: Iterator[_]): Boolean

Determina si el iterador y el iterador especificado devuelven elementos en el mismo orden

37

def seq: Iterator[A]

Devuelve una vista serie de la colección

38

def size: Int

Devuelve el número de elementos del iterador

39

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

Devuelve un nuevo iterador que apunta a un fragmento de la secuencia apuntada por el iterador, que comienza en el elemento nth desde el principio y termina en el elemento nth.

40

def sum: A

Devuelve la suma de los elementos numéricos del iterador

41

def take(n: Int): Iterator[A]

Devuelve un nuevo iterador con los primeros n elementos.

42

def toArray: Array[A]

Agrega todos los elementos apuntados por el iterador a un array y devuelve.

43

def toBuffer: Buffer[B]

Copia todos los elementos apuntados por el iterador al búfer Buffer.

44

def toIterable: Iterable[A]

Devuelve un Iterable que contiene todos los elementos de este traversable o iterador. Esto no terminará para los iteradores infinitos.

45

def toIterator: Iterator[A]

Agrega todos los elementos del iterador a un contenedor Iterator y devuelve.

46

def toList: List[A]

Agrega todos los elementos del iterador a una lista y devuelve.

47

def toMap[T, U]: Map[T, U]

Devuelve un Map con todos los pares clave-valor del iterador.

48

def toSeq: Seq[A]

Devuelve una Seq con todos los elementos del iterador.

49

def toString(): String

Convierte el iterador en una cadena.

50

def zip[B](that: Iterator[B]): Iterator[(A, B)]

Devuelve un nuevo iterador que apunta a una secuencia de pares binarios formados por elementos correspondientes de los iteradores especificados.

Más métodos se pueden consultar Documentación de la API

Conjuntos de Scala