一、 问题 导入
【教师提问】如果有一个列表的数据是(1,2,3,4,5),请问如何依次输出这5个数?
package iterator
/*
*List(1,2,3,4,5)
*
*/
object lterator01 {
def main(args: Array[String]): Unit = {
val list1=scala.collection.immutable.List(1,2,3,4,5)
list1.foreach(ele => {
println(ele)
})
//跳过list的前面两个元素,而输出随后的两元素
val it=list1.iterator
val it1=it.drop(2).take(2)
while (it1.hasNext){ //3 4
println(it1.next())
}
}
}
【教师提问】如何跳过前面两个元素,只输出3,4?
1. 子迭代器(以 drop 和 take 为例)
package iterator
object Iterator03 {
/*
*迭代器 Iterator02
*专门用来bian 遍历(挨个访问)集合元素。
* 1.获取。每个集合都有一个迭代器对象。用它来去遍历集合。
* 2.迭代器。next() 获取当前元素,移动迭代器
*
* drop:跳过指定个数的元素drop(3)
*
*take:获取指定数量里的元素
*
*/
def main(args: Array[String]): Unit = {
val list1=List(1,2,3,4,5)
val it=list1.iterator
val it2=it.take(3)//从当前位置开始,只获取三个元素
while (it2.hasNext){
println(it2.next())
}
//val it2=it.drop(1)//跳过一个元素
//while(it2.hasNext){
// println(it2.next())
// }
}
}
迭代器是一次性的,next之后,就不能再回头
- duplicate:复制迭代器
package iterator
object Iterator04 {
/*
*迭代器 Iterator02
*专门用来bian 遍历(挨个访问)集合元素。
* 1.获取。每个集合都有一个迭代器对象。用它来去遍历集合。
* 2.迭代器。next() 获取当前元素,移动迭代器
*
* drop:跳过指定个数的元素drop(3)
*
*take:获取指定数量里的元素
*
* 迭代器是一次性的,next之后,就不能再回头
* duplicate:复制迭代器
*
*/
def main(args: Array[String]): Unit = {
val list1=List(1,2,3,4,5)
val it=list1.iterator
val (it1,it2) =it.duplicate
it1.next()//一次性
it1.next()
while (it1.hasNext){
println(it1.next())
}
println("--------------")
while (it2.hasNext){
println(it2.next())
}
}
}
toList 把迭代器中剩余的元素转入一个新的list中。
package iterator
object Iterator05 {
/*
*迭代器 Iterator02
*专门用来bian 遍历(挨个访问)集合元素。
* 1.获取。每个集合都有一个迭代器对象。用它来去遍历集合。
* 2.迭代器。next() 获取当前元素,移动迭代器
*
* drop:跳过指定个数的元素drop(3)
*
*take:获取指定数量里的元素
*
* 迭代器是一次性的,next之后,就不能再回头
* duplicate:复制迭代器
*
* toList 把迭代器中剩余的元素转入一个新的list中
*
*/
def main(args: Array[String]): Unit = {
val list1=List(1,2,3,4,5)
val it=list1.iterator
it.next()
it.next()
println(it.next())
//希望把剩余的内容,装入一个新的List
val newList=it.toList
println(newList)
}
}
- zip:两个现在迭代器的元素按照顺序组合成一个新的迭代器。长度不一,会以短的为准
package iterator
object Iterator06 {
/*
*迭代器 Iterator02
*专门用来bian 遍历(挨个访问)集合元素。
* 1.获取。每个集合都有一个迭代器对象。用它来去遍历集合。
* 2.迭代器。next() 获取当前元素,移动迭代器
*
* drop:跳过指定个数的元素drop(3)
*
*take:获取指定数量里的元素
*
* 迭代器是一次性的,next之后,就不能再回头
* duplicate:复制迭代器
*
* toList 把迭代器中剩余的元素转入一个新的list中
*
* zip:两个现在迭代器的元素按照顺序组合成一个新的迭代器。长度不一,会以短的为准
*
*/
def main(args: Array[String]): Unit = {
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 pair=it3.next()
println(pair._1,pair._2)
}
}
}