Scala:如何通过遍历迭代器的for循环快速创建列表?
当然有简便方法啦!
Scala里的Iterator类自带了非常顺手的工具方法,完全不用手动遍历逐个添加元素到列表里。针对你这个生成10个随机Double的需求,一行代码就能搞定~
先看你的迭代器定义(我补了import语句让它能直接运行):
import scala.util.Random val randDoubleIterator = new Iterator[Double] { override def hasNext: Boolean = true override def next(): Double = Random.nextDouble }
要生成包含10个随机值的列表,只需要调用take和toList方法:
val myList: List[Double] = randDoubleIterator.take(10).toList
原理说明
take(10):从你的无限迭代器中取出前10个元素,返回一个有限的新迭代器(这个迭代器只会生成10个元素,之后hasNext就会返回false)。toList:把这个有限迭代器里的所有元素转换成List类型,一步到位完成列表创建。
拓展小技巧
如果之后需要对生成的随机值做一些转换,还可以链式调用其他迭代器方法,比如生成10个0到100的随机整数列表:
val randIntList = randDoubleIterator.map(_ * 100).take(10).map(_.toInt).toList
内容的提问来源于stack exchange,提问作者BlueTriangles
相关产品推荐
相关产品推荐

