塗りつぶしを使用
fill
定義済みの要素でデータ構造を埋めるための標準の Scala ライブラリ関数です。その非常に便利で、多くの入力を節約できます。
ListBuffer.fill(100)(ListBuffer("Scala" -> 1))
スカラ 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()
}
上記の実装は、1 次元データ構造用です。
一般的な提案
JavaのようにScalaを使用しているようです。これは良くない。明らかな利益のために物事を行うための機能的な方法を受け入れます。
コレクションの代わりに のimmutable
ようなコレクションを使用します。文字列の理由がない限り、変更可能なコレクションを使用しないでください。List
Vector
mutable
不変リストを使用して同じことができます
List.fill(100)(List("scala" -> 1))
scala -> 1
と同じです("scala", 1)