スカラ反復子
Scala コレクション
Scala Iterator はコレクションではなく、コレクションにアクセスするためのメソッドです。
イテレーターの 2 つの基本操作は、next と hasNext です。
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.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 的值: 6Scala Iteratorの一般的なメソッド
次の表は、Scala Iteratorの一般的に使用されるメソッドのリストです:
メソッドと説明 | |
---|---|
def hasNext: Boolean 返せる要素がある場合はtrueを返します。 | |
defnext():a thertherthertherthertherthertherthe Iteratorの次の要素を再生し、Iteratorのステータス3 | def++(that:=>を更新します。 Iterator[A]): Iterator[A]|
2 つのイテレータをマージ | 4 | def ++[B >: A](that :=> GenTraversableOnce[B] ): Iterator[B]
2 つのイテレータをマージします | 5 | def addString(b: StringBuilder): StringBuilder
StringBuilder bに文字列を追加します | 6 | def addString (b: StringBuilder、sep: String): StringBuilder
StringBuilder b に文字列を追加し、区切り文字を指定します | 7 | defbuffered: BufferedIterator[A]
Iterators は BufferedIterator に変換されます | 8 | def contains(elem: Any): Boolean
イテレータに指定された要素が含まれているかどうかを検出します | 9 | def copy ToArray( 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 が 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 反復子 | defによって返された各要素に対して指定されたプログラムf
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] | |
def toIterator: Iterator[A] | は、イテレーターのすべての要素を Iterator コンテナーに入れて返します。 | 46
def toList: List[A] | 反復子のすべての要素をリストに入れて | 47
def toMap[T, U]を返します:地図[T, U] | イテレータのすべてのキーと値のペアを Map に収集し、それを返します。 | 48
def toSeq: Seq[A] | ジェネレーターのすべての要素を Seq コンテナーに入れて返します。 |
49 | def toString(): String イテレータを文字列に変換 |
50 | def zip[B](that: Iterator[B]):アーター[( A、B) は、その要素のイテレータと指定されたイテレータの間の1対1対応で構成されるタプルのシーケンスを指す、新しいイテレータを返します |
その他のメソッドについては、APIを参照してください。ドキュメント
Scala コレクション