Iterator cho phép người dùng thực hiện lặp trên các collection do đó truy cập tất cả các phần tử. Iterator có 2 phương thức quan trọng đó là
next
và hasNext
. Các phần tử kế tiếp trả về phần tử kế tiếp và hasNext
sẽ kiểm tra xem phần tử đó có tồn tại hay khôngHãy cùng xem ví dụ sau đây
object Car { def main(args: Array[String]) { val car = Iterator("Santro", "Punto", "WagonR", "Polo", "Audi") while (car.hasNext) { println(car.next()) } } }
Kết quả
Santro Punto WagonR Polo Audi
Độ dài của Iterator
Các phương thức size
hoặc length
dùng để tìm số phần tử trong Iterator
Hãy cùng xem ví dụ sau
object CarLength { def main(args: Array[String]) { val c1 = Iterator("Santro", "Punto", "WagonR", "Polo", "Audi") val c2 = Iterator("Volkswagen", "Alto", "Xylo", "Innova") println("Iterator c1 : " + c1.size) println("Length of c2 : " + c2.length) } }
Kết quả
Iterator c1 : 5 Length of c2 : 4
Tìm phần tử lớn nhất và nhỏ nhất
Các phương thức it.min
và it.max
dùng để tìm phần tử lớn nhất và nhỏ nhất trong iterator
object MinMax { def main(args: Array[String]) { val m1 = Iterator(12,45,67,89) val m2 = Iterator(44,66,77,88) println("Smallest element " + m1.min ) println("Largest element " + m2.max ) } }
Kết quả
Smallest element 12 Largest element 88
Các phương thức hữu ích trong Iterator
- def addString(x: StringBuilder): StringBuilder → Nối các phần tử của Iterator và một StringBuilder và trả về StringBuilder mới
scala> val it=Iterator(3,2,4,9,7) it: Iterator[Int] = non-empty iterator scala> it.addString(new StringBuilder()) res18: StringBuilder = 32497
- def buffered: BufferedIterator[X] → Chuyển đổi một Iterator thành một BufferedIterator
scala> val it=Iterator(3,2,4,9,7) it: Iterator[Int] = non-empty iterator scala> it.buffered res20: scala.collection.BufferedIterator[Int] = non-empty iterator
- def foreach(f: (X) => Unit): Unit → Dùng để lặp tất cả các phần tử trong Iterator với tham số đầu vào là một function
- def indexOf(elem: Y): Int → trả về index của phần tử đầu tiên khi tìm phần tử elem trong Iterator
scala> val it=Iterator(3,2,4,9,7) it: Iterator[Int] = non-empty iterator scala> it.indexOf(2) res58: Int = 1
- def product: X → Nhân các phần tử trong Iterator
scala> val it=Iterator(3,2,4,9,7) it: Iterator[Int] = non-empty iterator scala> it.product res92: Int = 1512