第十章 Scala 容器基础(十二):使用Iterators

Problem

    你需要在你的应用中使用iterator。

Solution

    尽管使用带有hasNext()和next()方法的iterator是非常通用的遍历Java集合的方法。但是它们在Scala集合中并不经常被使用。因为Java集合有许多像map和foreach的方法让让你可以轻松地实现自己的算法。必须澄清的是,在Scala中我从未直接使用过如下代码:

// don't do this
val it = collection.iterator
while (it.hasNext) ...

    话虽如此,一些时候你还是会用到一个iterator,一个最好的例子就是io.Source.fromFile方法。这个方法返回一个迭代器,这非常好,因为当你在使用非常大的文件的时候,把整个文件读进内存并不是一个好的选择。

    对于iterator,最重要的一点是,当你使用完之后,它就不能用了。你可以使用一个iterator来打印集合中元素,但是你只能用一次,当你再次调用的时候,你会发现,你什么都得不到了。

scala> val it = Iterator(1,2,3)
it: Iterator[Int] = non-empty iterator

scala> it.foreach(println)
1
2
3

scala> it.foreach(println)

    一个iterator不是一个集合;他只是给你一种一个接一个地访问集合元素的方法。但是一个iterator定义了许多集合中才有的方法,包括foreach, map, flatMap, collect等。你也可以吧一个iterator转换称为一个集合。

scala> val it = Iterator(1,2,3)
it: Iterator[Int] = non-empty iterator

scala> it.toArray
res11: Array[Int] = Array(1, 2, 3)

scala> it.to
to              toArray         toBuffer        toIndexedSeq    toIterable      toIterator      toList          
toMap           toSeq           toSet           toStream        toString        toTraversable   toVector

转载于:https://my.oschina.net/nenusoul/blog/657387

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值