使用填充
fill 是一个标准的 Scala 库函数,用于用预定义的元素填充数据结构。它非常方便,可以节省大量打字时间。
ListBuffer.fill(100)(ListBuffer("Scala" -> 1))
Scala REPL
scala> import scala.collection.mutable._
import scala.collection.mutable._
scala> ListBuffer.fill(100)(ListBuffer("Scala" -> 1))
res4: scala.collection.mutable.ListBuffer[scala.collection.mutable.ListBuffer[(String, Int)]] = ListBuffer(ListBuffer((Scala,1)), ListBuffer((Scala,1)), ListBuffer((Scala,1)), ListBuffer((Scala,1)), ListBuffer((Scala,1)) ...
在标准库中填充实现
def fill[A](n: Int)(elem: => A): CC[A] = {
val b = newBuilder[A]
b.sizeHint(n)
var i = 0
while (i < n) {
b += elem
i += 1
}
b.result()
}
上面的实现是针对一维数据结构的。
一般建议
看起来您像 Java 一样使用 Scala。这是不好的。采用功能性的方式做事以获得明显的好处。
使用immutable 集合,例如List、Vector,而不是mutable 集合。除非您有字符串原因,否则不要使用可变集合。
使用不可变列表也可以完成同样的事情
List.fill(100)(List("scala" -> 1))
scala -> 1 与("scala", 1) 相同