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

迭代器Iterator Scala

集合Scala

Scala Iterator (itérateur) n'est pas un ensemble, c'est une méthode pour accéder aux ensembles.

Les deux opérations de base de l'itérateur it sont next et hasNext.

appelle it.next() retourne l'élément suivant de l'itérateur et met à jour l'état de l'itérateur.

appelle it.hasNext() utilisé pour vérifier s'il reste des éléments dans la collection.

La manière la plus simple de faire en sorte que l'itérateur it retourne chaque élément individuellement est d'utiliser une boucle while :

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

Exécuter le code suivant, le résultat de la sortie est :

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

recherche des éléments maximaux et minimaux

Vous pouvez utiliser it.min et it.max La méthode recherche les éléments maximaux et minimaux dans l'itérateur, voici un exemple :

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("L'élément maximal est : ") + ita.max )
      println("L'élément minimal est : ") + itb.min )
   }
}

Exécuter le code suivant, le résultat de la sortie est :

$ scalac Test.scala 
$ scala Test
L'élément maximal est :90
L'élément minimal est :2

obtenir la longueur de l'itérateur

Vous pouvez utiliser it.size ou it.length Méthode pour voir le nombre d'éléments dans l'itérateur. Exemple suivant :

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

Exécuter le code suivant, le résultat de la sortie est :

$ scalac Test.scala 
$ scala Test
La valeur de ita.size : 6
La valeur de itb.length : 6

Méthodes couramment utilisées de Scala Iterator

Le tableau suivant liste les méthodes couramment utilisées de Scala Iterator :

NuméroMéthode et description
1

def hasNext: Boolean

Retourner true si il y a encore des éléments à renvoyer.

2

def next(): A

Retourner l'élément suivant de l'itérateur et mettre à jour l'état de l'itérateur

3

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

Fusionner deux itérateurs

4

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

Fusionner deux itérateurs

5

def addString(b: StringBuilder): StringBuilder

Ajouter une chaîne de caractères à StringBuilder b

6

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

Ajouter une chaîne de caractères à StringBuilder b, et spécifier le séparateur

7

def buffered: BufferedIterator[A]

Tous les itérateurs sont convertis en BufferedIterator

8

def contains(elem: Any): Boolean

Vérifier si l'itérateur contient l'élément spécifié

9

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

Transmet les valeurs sélectionnées de l'itérateur à un tableau.

10

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

Retourne le nombre total d'éléments de l'itérateur qui satisfont la condition p.

11

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

Retourne un nouveau ensemble avec les n premiers éléments délaissés.

12

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

Délaisse les éléments de gauche à droite jusqu'à ce que la condition p ne soit plus valable.

13

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

Génère deux itérateurs qui peuvent retourner tous les éléments de l'itérateur.

14

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

Retourne une valeur booléenne indiquant si l'itérateur contient un élément satisfaisant p.

15

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

Retourne un nouvel itérateur pointant vers tous les éléments de l'itérateur qui satisfont la condition p.

16

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

Retourne un itérateur pointant vers les éléments de l'itérateur qui ne satisfont pas la condition p.

17

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

Retourne le premier élément satisfaisant p ou None. Note : si un élément satisfaisant la condition est trouvé, l'itérateur est placé après cet élément ; sinon, il est placé à la fin.

18

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

Applique la fonction f à chaque élément de la séquence de l'itérateur et retourne un itérateur pointant vers la séquence de résultats.

19

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

Retourne une valeur booléenne indiquant si tous les éléments pointés par it satisfont p.

20

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

Exécute la programme spécifiée sur chaque élément retourné par l'itérateur.

21

def hasDefiniteSize: Boolean

Retourne true si le nombre d'éléments de l'itérateur est limité (par défaut équivalent à isEmpty)

22

def indexOf(elem: B): Int

Retourne le premier élément de l'itérateur whose index equals x. Note : l'itérateur passe au-delà de cet élément.

23

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

Retourne l'élément de l'itérateur whose index satisfies the condition p. Note : l'itérateur passe au-delà de cet élément.

24

def isEmpty: Boolean

Vérifie si it est vide, renvoie true s'il est vide, sinon renvoie false (l'inverse de hasNext).

25

def isTraversableAgain: Boolean

Teste si cet itérateur peut être traversé plusieurs fois.

26

def length: Int

Renvoie le nombre d'éléments de l'itérateur.

27

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

Renvoie un nouveau itérateur où chaque élément de it est passé à la fonction f et les résultats sont générés.

28

def max: A

Renvoie l'élément le plus grand des éléments itérés par l'itérateur.

29

def min: A

Renvoie l'élément le plus petit des éléments itérés par l'itérateur.

30

def mkString: String

Convertit tous les éléments de l'itérateur en chaîne de caractères.

31

def mkString(sep: String): String

Convertit tous les éléments de l'itérateur en chaîne de caractères, en spécifiant le séparateur.

32

def nonEmpty: Boolean

Vérifie si le conteneur contient l'élément (équivalent à hasNext).

33

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

Renvoie tous les éléments de l'itérateur, ajoute des copies de elem jusqu'à ce que la longueur atteigne len.

34

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

Renvoie un nouvel itérateur où les éléments de n°from à n°replaced sont remplacés par les éléments pointés par l'itérateur.

35

def product: A

Renvoie le produit des éléments numériques pointés par l'itérateur

36

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

Vérifie si l'itérateur et l'itérateur spécifié renvoient des éléments en ordre

37

def seq: Iterator[A]

Renvoie une vue séquentielle de la collection

38

def size: Int

Renvoie le nombre d'éléments de l'itérateur

39

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

Renvoie un nouvel itérateur, pointant sur la séquence pointée par l'itérateur, à partir de l'élément de début n°from jusqu'à l'élément de fin n°until.

40

def sum: A

Renvoie la somme des éléments numériques pointés par l'itérateur

41

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

返回前n个元素的新迭代器。

42

def toArray: Array[A]

将迭代器指向的所有元素归入数组并返回。

43

def toBuffer: Buffer[B]

将迭代器指向的所有元素拷贝至缓冲区Buffer。

44

def toIterable: Iterable[A]

返回一个包含此可遍历或迭代器所有元素的可迭代对象。对于无限迭代器,这不会终止。

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)]

返回一个新迭代器,指向分别由迭代器和指定的迭代器that元素一一对应而成的二元组序列

更多方法可以参考 文档API

集合Scala