迭代器(iterator)

18 阅读1分钟
package iterator

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())
    }
  }
}
package iterator

object iterator02 {
  def main(args: Array[String]): Unit = {
    //获取一个迭代器
    val it = List(1,2,3,4).iterator
    val it1 = it.drop(2)
    while(it1.hasNext){
      println(it.next())
    }
  }
}
package iterator
/*
1 next() 获取当前的元素,移动一次迭代器
2 hasNext 判断是否有下一个元素
3 drop(n) 从当前位置开始,跳过n个元素,返回一个新的迭代器
4 take(n) 从当前位置开始,获取n个元素,返回一个新的迭代器
*/
object iterator02 {
  def main(args: Array[String]): Unit = {
    //获取一个迭代器
    val it = List(1,2,3,4).iterator
    val (it1,it2) = it.duplicate
    //使用it1访问前三个
    val it3 = it1.take(3)
    while(it3.hasNext)
      println(it3.next())

    println("------------")
    while(it2.hasNext){
    println(it2.next())
    }
  }
}
package iterator

/*
1 next() 获取当前的元素,移动一次迭代器
2 hasNext 判断是否有下一个元素
3 drop(n) 从当前位置开始,跳过n个元素,返回一个新的迭代器
4 take(n) 从当前位置开始,获取n个元素,
5. duplicate 复制迭代器
6. toList: 把迭代器中的所有元素放在一个新的List中
7. zip 把两个迭代器「绑定」  下标的元素,同时再移动这两个迭代器,并且以对偶的方式
*/
object iterator03 {
  def main(args: Array[String]): Unit = {
    // 第一个迭代器示例
    val it = List(1,2,3,4,5).iterator
    it.next()
    val list1 = it.toList
    println(list1)

    // 第二个迭代器(zip绑定)示例
    val it1 = List(1,2,3,4,5,6).iterator
    val it2 = List("one", "two", "three", "four", "five").iterator

    val it3 = it1.zip(it2)
    while(it3.hasNext){
      val rs = it3.next()
      println(rs._1, rs._2)
    }
  }
}