使用填充
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
List.fill(100)(List("scala" -> 1))
scala -> 1
做
同樣的事情是一樣的("scala", 1)