Scala Iterator


up.gif Scala Collections

Scala Iterator bukan koleksi, ia adalah kaedah untuk mengakses koleksi. Dua operasi asas

iterator it ialah seterusnya dan hasNext.

Memanggil it.next() akan mengembalikan elemen seterusnya bagi iterator dan mengemas kini keadaan iterator.

memanggil it.hasNext() untuk mengesan sama ada terdapat sebarang elemen dalam koleksi.

Cara paling mudah untuk membiarkan iterator ia mengembalikan semua elemen satu demi satu ialah menggunakan gelung sementara:

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

Laksanakan kod di atas, hasil output ialah:

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

Cari maksimum Dengan elemen minimum

anda boleh menggunakan kaedah it.min dan it.max untuk mencari elemen maksimum dan minimum daripada iterator, contohnya adalah seperti berikut:

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 )

   }
}

Laksanakan kod di atas, hasil output ialah:

$ scalac Test.scala 
$ scala Test
最大元素是:90
最小元素是:2

Dapatkan panjang iterator

Anda boleh menggunakan Kaedah it.size atau it.length untuk melihat bilangan elemen dalam iterator. Contohnya adalah seperti berikut:

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 )

   }
}

Laksanakan kod di atas, hasil output ialah:

$ scalac Test.scala 
$ scala Test
ita.size 的值: 6
itb.length 的值: 6

Kaedah biasa Scala Iterator

Jadual berikut menyenaraikan yang biasa digunakan kaedah Scala Iterator:

464748 Koleksi Scala
Nombor siriKaedah dan penerangan
1

def hasNext: Boolean

Jika terdapat elemen boleh dikembalikan, kembalikan benar.

2

def next(): A

mengembalikan elemen lelaran seterusnya , dan kemas kini status iterator

3

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

Gabungkan dua iterator

4

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

Gabungkan dua iterator

5

def addString(b: StringBuilder): StringBuilder

Tambah rentetan pada StringBuilder b

6

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

Tambah rentetan pada StringBuilder b dan nyatakan Notasi pemisah

7

def buffered: BufferedIterator[A]

Iterators ditukar kepada BufferedIterator

8

def mengandungi(elemen: Mana-mana): Boolean

Kesan iterator Sama ada elemen yang dinyatakan disertakan dalam

9

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

menghantar nilai yang dipilih dalam iterator ke tatasusunan

10

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

Mengembalikan jumlah bilangan elemen dalam elemen lelaran yang memenuhi syarat p.

11

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

return Buang n elemen pertama set baharu

12

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

Buang elemen dari kiri ke kanan sehingga syarat p tidak benar

13

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

Menghasilkan dua iterator yang boleh mengembalikan semua elemen iterator masing-masing.

14

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

Mengembalikan nilai Boolean yang menunjukkan sama ada terdapat unsur yang memenuhi p di antara elemen lelaran.

15

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

Mengembalikan lelaran baharu yang menunjuk kepada semua elemen dalam elemen lelaran yang memenuhi syarat p.

16

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

Mengembalikan iterator yang menunjuk kepada elemen dalam iterator yang tidak memenuhi syarat p.

17

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

Mengembalikan elemen pertama yang memenuhi p atau Tiada. Nota: Jika elemen yang memenuhi syarat ditemui, iterator akan diletakkan selepas elemen jika tidak ditemui, ia akan diletakkan di penghujung.

18

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

Menggunakan fungsi f pada setiap elemen dalam jujukan lelaran dan mengembalikan lelaran yang menunjuk kepada jujukan yang terhasil.

19

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

Mengembalikan nilai Boolean yang menunjukkan sama ada elemen yang ditunjuk olehnya memenuhi p.

20

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

Laksanakan atur cara yang ditentukan f

21

def hasDefiniteSize: Boolean

Kembalikan benar jika iterator mempunyai bilangan elemen yang terhad (lalai adalah bersamaan dengan isEmpty)

22

def indexOf(elem: B ): Int

Mengembalikan elemen pertama antara elemen lelaran dengan indeks sama dengan x. Nota: iterator akan pergi ke elemen ini.

23

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

Mengembalikan elemen yang subskripnya memenuhi syarat p antara elemen lelaran. Nota: iterator akan pergi ke elemen ini.

24

def isEmpty: Boolean

Periksa sama ada kosong, kembalikan jika ia kosong benar, sebaliknya palsu (bertentangan dengan hasNext).

25

def isTraversableAgain: Boolean

Menguji sama ada Iterator ini boleh dilalui berulang kali.

26

def length: Int

Mengembalikan bilangan elemen lelaran.

27

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

Hasil penghantaran setiap elemen di dalamnya untuk berfungsi f menjana lelaran baharu.

28

def maks: A

Mengembalikan elemen elemen lelaran terbesar.

29

def min: A

Mengembalikan elemen terkecil antara elemen lelaran.

30

def mkString: String

Tukar semua elemen lelaran kepada rentetan .

31

def mkString(sep: String): String

akan mengulang semua Elemen ditukar kepada rentetan dan pembatas ditentukan.

32

def nonEmpty: Boolean

Menyemak sama ada elemen terkandung dalam bekas (bersamaan dengan hasNext).

33

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

Mula-mula kembalikan semua elemen iterator, tambah dan salin elem sehingga panjangnya mencapai len.

34

def patch(dari: Int, patchElems: Iterator[B], digantikan: Int): Iterator[B ]

Mengembalikan lelaran baharu di mana elemen yang diganti bermula dari elemen dari digantikan dengan elemen yang ditunjuk oleh lelaran.

35

def product: A

Mengembalikan elemen angka yang diindeks oleh produk iterator .

36

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

Penghakiman Sama ada lelaran dan parameter lelaran yang ditentukan mengembalikan elemen yang sama dalam urutan

37

def seq: Iterator[A]

Mengembalikan paparan siri koleksi

38

saiz def: Int

Mengembalikan bilangan elemen lelaran

39

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

Mengembalikan lelaran baharu yang menunjuk kepada serpihan bermula dari elemen dari dan berakhir pada elemen sehingga dalam urutan yang ditunjuk oleh lelaran.

40

def sum: A

Mengembalikan nilai unsur angka yang diindeks oleh iterator dan

41

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

Mengembalikan lelaran baharu pada n elemen pertama.

42

def toArray: Array[A]

semua iterator menghala ke The elemen diberikan kepada tatasusunan dan dikembalikan.

43

def toBuffer: Buffer[B]

semua iterator menghala ke Elements disalin ke Penampan penimbal.

44

def toIterable: Iterable[A]

Mengembalikan Iterable yang mengandungi semua elemen daripada boleh dilalui atau iterator ini. Ini tidak akan ditamatkan untuk iterator tak terhingga.

45

def toIterator: Iterator [A] 🎜 >

Masukkan semua elemen iterator ke dalam bekas Iterator dan kembalikannya.

def toList: List[A]

Letakkan semua elemen iterator Susun ke dalam senarai dan kembalikan

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

Kumpulkan semua pasangan nilai kekunci lelaran ke dalam Peta dan kembalikannya.

def toSeq: Seq[A]

Masukkan semua elemen penjana ke dalam bekas Seq dan kembalikan.

49

def toString(): String

Tukar lelaran kepada rentetan

50

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

Mengembalikan iterator baru, menunjuk kepada urutan tupel yang terdiri daripada surat-menyurat antara satu-ke-satu antara iterator dan iterator yang ditentukan elemen itu. 🎜>Untuk kaedah lanjut, sila rujuk dokumentasi API