scala的迭造器

1.对比foreach
它的优点在于:

(1) 内存效率高。迭代器采用延迟计算的方式,它不会将整个集合加载到内存中,而是在每次调用next方法时才计算并返回下一个元素。

(2) 统一的遍历方法。迭代器为不同类型的集合(如列表、集合、映射等)提供了一种统一的遍历方式。无论底层集合的具体结构如何,只要能获取到迭代器,就可以使用相同的hasNext和next方法来遍历元素。

(3) 支持函数式编程风格,便于链式操作。

2. duplicate方法
功能:复制迭代器。返回一对迭代器,它们可以独立遍历原始迭代器中的元素序列。

语法:(迭代器1,迭代器2) = 迭代器.duplicate()

3. toList 方法
toList 方法将迭代器中的剩余元素转换为一个列表。

4.drop和take方法

drop 会跳过指定数量的元素,返回一个新的迭代器
take 只处理当前开始的,指定数量的元素,返回一个新的迭代器

5. zip方法
zip方法用于将两个迭代器的元素按顺序组合成一个新的迭代器,其中每个元素是一个包含两个迭代器对应位置元素的元组。如果两个迭代器的长度不同,zip操作会在较短的迭代器耗尽时停止。

 
  1. //package test28

  2. // 迭代器

  3. //object test28_2 {

  4. // def main(args: Array[String]): Unit = {

  5. // var li1 = List(1, 2, 3, 4, 5, 6)

  6. // val it1 = li1.iterator

  7. // 1.常用方法 next

  8. // println(it1.next()) // 作用:获取当前元素 + 移动迭代器

  9. // println(it1.next()) // 作用:获取当前元素 + 移动迭代器

  10. // println(it1.next()) // 作用:获取当前元素 + 移动迭代器

  11. //

  12. // println(it1.hasNext)

  13. //

  14. // 2.复制迭代器 duplicate

  15. // val (it2,it3)=it1.duplicate

  16. //

  17. // while (it2.hasNext){

  18. // println(it2.next())

  19. // }

  20. //

  21. // while (it3.hasNext){

  22. // println(it3.next())

  23. // }

  24. //

  25. // 3.toList 把剩余的元素转成列表

  26. // it1.next() // 移动一次迭代器

  27. // it1.next() // 移动一次迭代器

  28. // val l2 = it1.toList // 把剩余的元素转成列表

  29. // println(l2)

  30. //

  31. // 4.子迭代器

  32. // drop 会跳过指定数量的元素,返回一个新的迭代器

  33. // take 只处理当前开始的,指定数量的元素,返回一个新的迭代器

  34. //

  35. // val it2 = it1.drop(3)

  36. // val it3 = it1.take(3)

  37. // while (it3.hasNext){

  38. // println(it3.next())

  39. // }

  40. // 只输出3,4,5 要怎么做?

  41. // val it5 = it1.drop(2).take(3)

  42. // while (it5.hasNext){

  43. // println(it5.next())

  44. // }

  45. //

  46. // 5.zip:拉链

  47. // val it1 = List("1","2","3").iterator

  48. // val it2 = List("one","two","three","four").iterator

  49. //

  50. // val it3 = it1.zip(it2)

  51. // while (it3.hasNext){

  52. // val rs = it3.next()

  53. // println(rs._1,"-->",rs._2)

  54. // }

  55. // 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值