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("百度", "Google", "w3codebox", "淘宝") while(it.hasNext){ println(it.next()) } } }
上記のコードを実行すると、以下の結果が表示されます:
$ scalac Test.scala $ scala Test 百度 Google w3codebox 淘宝
次を使用して 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 Stringを StringBuilder b に追加 |
6 | def addString(b: StringBuilder, sep: String): StringBuilder Stringを 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が成立しないまで左から要素を捨てます |
13 | def duplicate: (Iterator[A], Iterator[A]) それぞれイテレータのすべての要素を返す二つのイテレータを生成します |
14 | def exists(p: (A) => Boolean): Boolean イテレータの要素にpを満たす要素が存在するかどうかを示す布尔値を返します |
15 | def filter(p: (A) => Boolean): Iterator[A] 条件pを満たすすべての要素を持つ新しいイテレータを返します |
16 | def filterNot(p: (A) => Boolean): Iterator[A] 条件pを満たさない要素を持つイテレータを返します |
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 itが指す要素がpを満たすかどうかを示す布尔値を返します |
20 | def foreach(f: (A) => Unit): Unit 指定されたプログラムfをイテレータから返される各要素に実行します |
21 | def hasDefiniteSize: Boolean イテレータの要素数が有限であればtrueを返します(デフォルトではisEmptyに等しい) |
22 | def indexOf(elem: B): Int indexがxに等しい最初の要素を返します。注意:イテレータはこの要素を越えます。 |
23 | def indexWhere(p: (A) => Boolean): Int 条件p满足的下标处的元素を返します。注意:イテレータはこの要素を越えます。 |
24 | def isEmpty: Boolean itが空かどうかを確認し、空であればtrue、そうでなければfalseを返却(hasNextの逆) |
25 | def isTraversableAgain: Boolean このイテレータが繰り返し巡回可能かどうかをテスト |
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] 新しいイテレータを返却し、from番目の要素から始まり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を返します。無限イテレータの場合、終了しません。 |
45 | def toIterator: Iterator[A] イテレータのすべての要素をイテレータコンテナに格納し、返します。 |
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 文書