Find the Underlying Structure of Big Data by Machine Learning with Spark | QQ群: 452154809

Scala 迭代器 VS Java 迭代器

Scala Bin 300℃ 0评论

强悍的Scala 迭代器示例如下:

val ita = Iterator(20, 40, 2, 50, 69, 90)

val itb = Iterator(20, 40, 2, 50, 69, 90)

val itc = Iterator(20, 40, 2, 50, 69, 90)

val itd = Iterator(20, 40, 2, 50, 69, 90)

println(“Maximum valued element ” + ita.max) // 90

println(“Minimum valued element ” + itb.min) // 2

println(“Value of ita.size : ” + itc.size) // 6

println(“Value of itb.length : ” + itd.length) // 6

运行代码,可验证通过scala中的迭代器可以获取其最大值、最小值、 迭代器的元素个数。其实,不止限于此,还可获取总和sum、总积product等等,更多请见 Scala迭代器

同时,大家注意到上面定义了四个元素相同的迭代器,为什么不只定义一个来展示特性呢?

这是因为Iterator用一次后就消失了,如果要用两次,需要使用toList或者使用duplicate:

val (a,b) = Iterator(1,3,5,7) duplicate // a = b = non-empty iterator

又如:

val it = Iterator(1,3,5,7)

val (a,b) = it.duplicate // 在使用a、b前,不能使用it,否则a、b都不可用了。

a.toList // List(1,3,5,7) //运行之后 it就不可用了

b.toList // List(1,3,5,7) //运行之后 it就不可用了

Java中Iterator没有以上的特性,可能有人会说可以直接通过集合本身来实现,但是在Spark程序中遇到的mapPartitions这样的方法,其本身的参数就是迭代器,这也是文章的目地所在。

转载请注明:单向街的夏天 » Scala 迭代器 VS Java 迭代器

喜欢 (10)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址