スカラ反復子


up.gif Scala コレクション

Scala Iterator はコレクションではなく、コレクションにアクセスするためのメソッドです。

イテレーターの 2 つの基本操作は、nexthasNext です。

it.next() を呼び出すと、イテレータの次の要素が返され、イテレータの状態が更新されます。

it.hasNext() を呼び出して、コレクションにまだ要素が存在するかどうかを検出します。

反復子にすべての要素を 1 つずつ返す最も簡単な方法は、while ループを使用することです:

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

上記のコードを実行すると、出力結果は次のようになります:

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

最大要素と最小要素を見つけます

it.minit.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の一般的なメソッド

次の表は、Scala Iteratorの一般的に使用されるメソッドのリストです:

シリアル番号 12def++(that:=>を更新します。 Iterator[A]): Iterator[A]def ++[B >: A](that :=> GenTraversableOnce[B] ): Iterator[B]def addString(b: StringBuilder): StringBuilderdef addString (b: StringBuilder、sep: String): StringBuilderdefbuffered: BufferedIterator[A]def contains(elem: Any): Booleandef copy ToArray( xs: Array[A], start: Int, len: Int): Unitdef count(p: (A) = > Boolean): Intdef drop(n: Int): Iterator[A]defによって返された各要素に対して指定されたプログラムf iterator と指定された iterator パラメータが同じ要素を返すかどうか 系列を返すコレクションのビューイテレータの要素の数を返しますは、イテレータが指すシーケンス内の from 要素から始まり until 要素で終わるフラグメントを指す新しいイテレータを返します。 イテレータによってインデックス付けされた数値要素の合計を返します 最初の n 個の要素の新しい反復子を返します。 イテレータが指すすべての要素を配列して返します。 イテレータが指すすべての要素をバッファ Buffer にコピーします。 この traversable または iterator のすべての要素を含む Iterable を返します。これは、無限反復子に対しては終了しません。 def toIterator: Iterator[A]46def toList: List[A]47 def toMap[T, U]を返します:地図[T, U]48def toSeq: Seq[A]
メソッドと説明
def hasNext: Boolean

返せる要素がある場合はtrueを返します。

defnext():a

thertherthertherthertherthertherthe Iteratorの次の要素を再生し、Iteratorのステータス3

2 つのイテレータをマージ

4

2 つのイテレータをマージします

5

StringBuilder bに文字列を追加します

6

StringBuilder b に文字列を追加し、区切り文字を指定します

7

Iterators は BufferedIterator に変換されます

8

イテレータに指定された要素が含まれているかどうかを検出します

9

反復子で選択された値を配列に渡します

10

条件 p を満たすイテレータ要素の要素の総数を返します。

11

ドロップされた最初の n 要素の新しいコレクションを返します
12

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

条件 p が true でなくなるまで要素を左から右にドロップします

13

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

それぞれイテレータのすべての要素を返すことができる 2 つのイテレータを生成します。

14

defexists(p: (A) => Boolean): Boolean

iterator要素内にpを満たす要素が存在するかどうかを示すBoolean値を返します。

15

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

条件 p を満たすイテレータ要素内のすべての要素を指す新しいイテレータを返します。

16

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

条件 p を満たさない iterator 要素内の要素を指す反復子を返します。

17

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

p または None を満たす最初の要素を返します。注: 条件を満たす要素が見つかった場合、イテレータは要素の後に配置され、見つからなかった場合は最後に配置されます。

18

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

関数 f をイテレータのシーケンス内の各要素に適用し、そして結果のシーケンスを指す反復子を返します。

19

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

それが指す要素が p を満たすかどうかを示すブール値を返します。

20

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

反復子

21

を実行しますhasDefiniteSize: Boolean

イテレータの要素数が制限されている場合はtrueを返します(デフォルトはisEmptyと同等)

22

defindexOf(elem: B): Int

Returnインデックスが x に等しい反復子の要素。注: イテレータはこの要素を処理します。

23

defindexWhere(p: (A) => Boolean): Int

反復子の要素のうち、添字が条件 p を満たす要素を返します。注: イテレータはこの要素を処理します。

24

def isEmpty: Boolean

空かどうかをチェックし、空であればtrueを返し、そうでなければfalseを返します(hasNextの反対)。

25

def isTraversableAgain: Boolean

この Iterator を繰り返し走査できるかどうかをテストします。

26

def length:

イテレータ要素の数を返します。

27

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

その中の各要素を関数 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]

まず、イテレータの要素をすべて返し、長さがlenに達するまでelemを追加してコピーします。

34

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

from 要素から始まる新しい反復子を返します。置き換えられた要素は次のように置き換えられます。イテレータが指す要素。

35

def product: A

反復子によってインデックス付けされた数値要素の積を返します。 S36eDef SameElements (that: Iterator [_]): Boolean

37

def seq: Iterator[A]

38

def size: Int

39

def スライス(from: Int, until: Int) : Iterator[A]

40

def sum: A

41

def take(n: Int):あ]

42

def toArray: Array[A]

43

def toBuffer: Buffer[B]

44

def toIterable: Iterable[A]

は、イテレーターのすべての要素を Iterator コンテナーに入れて返します。

反復子のすべての要素をリストに入れて

イテレータのすべてのキーと値のペアを Map に収集し、それを返します。

ジェネレーターのすべての要素を Seq コンテナーに入れて返します。

49

def toString(): String

イテレータを文字列に変換

50

def zip[B](that: Iterator[B]):アーター[( A、B)

は、その要素のイテレータと指定されたイテレータの間の1対1対応で構成されるタプルのシーケンスを指す、新しいイテレータを返します

その他のメソッドについては、APIを参照してください。ドキュメント

up.gif Scala コレクション