1.迭代器的定义
-
迭代器是一种用于遍历集合元素的对象。它提供了统一的方式来访问各种集合类 型(如列表、映射、集合等)中的元素,而不需要了解集合的内部结构
-
在 Scala 中,迭代器是一种抽象的概念,它有特定的接口和方法来实现元素的遍历
2.迭代器的基本使用
第一步:构建一个迭代器
第二步:循环获取元素
object iterator01 {
def main(args: Array[String]): Unit = {
val list = List(1, 2, 3, 4, 5)
// 如何依次输出这个5个元素?
list.foreach(ele => println(ele))
// 问:如何只输出:3,4
val it = list.iterator.drop(2).take(2)
while(it.hasNext){
println(it.next())
}
}
}
3.迭代器的常用方法
-
next() 获取当前的元素,移动一次迭代
-
hasNext 判断是否有下一个元素
-
drop(n) 从当前位置开始,跳过n个元素,它返回一个新的迭代器
-
take(n) 从当前位置开始,获取n个元素,它返回一个新的迭代器
-
duplicate 复制迭代器
-
toList 把迭代器中的元素放在一个新的List中
-
zip 将两个迭代器合并成新的迭代器,可以同步移动这两个迭代器,并且以元组的形式
object iterator02 {
/**
*1.next() 获取当前的元素,移动一次迭代器
* 2.hasNext 判断是否有下一个元素
* 3.drop(n) 从当前位置开始,跳过n个元素,它返回一个新的迭代器
* 4.take(n) 从当前位置开始,获取n个元素,它返回一个新的迭代器
* 5.duplicate 复制迭代器
* */
def main(args: Array[String]): Unit = {
//获取一个迭代器
val it = List(1,2,3,4,5,6,7,8,9,10).iterator
val (it1,it2) = it.duplicate
//使用it1访问前三个
val it3 = it1.take(3)
while(it3.hasNext){
print(it3.next())
}
println("------------------------")
while(it2.hasNext){
println(it2.next())
}
}
}
object iterator03 {
/**
* 1. next() 获取当前的元素,移动一次迭代
* 2. hasNext 判断是否有下一个元素
* 3. drop(n) 从当前位置开始,跳过n个元素,它返回一个新的迭代器
* 4. take(n) 从当前位置开始,获取n个元素,它返回一个新的迭代器
* 5. duplicate 复制迭代器
* 6. toList 把迭代器中的元素放在一个新的List中
* 7. zip 将两个迭代器合并成新的迭代器,可以同步移动这两个迭代器,并且以元组的形式
*/
def main(args: Array[String]): Unit = {
val it = List(1,2,3,4,5).iterator
// it.next()
// it.next()
val list1 = it.toList
println(list1)
val it1 = List(1,2,3,4,5,6).iterator
val it2 = List("one", "two", "three", "four", "five").iterator
val its = it1.zip(it2)
while(its.hasNext){
val rs = its.next()
println(rs._1, rs._2)
}
}
}
4.迭代器的优点
1.内存效率高
2.统一的遍历方法
3.支持函数式编程风格,便于链式操作