によ:ここ
import scala.collection.immutable.TreeMap
def add[K,V](map: TreeMap[K,V], elem: (K,V), maxSize: Int): TreeMap[K,V] = {
map.takeRight(maxSize - 1) + elem
}
は、それを使用する方法である:
scala> val m = TreeMap(1 -> "one", 2 -> "two", 3 -> "three")
m: scala.collection.immutable.TreeMap[Int,String] =
Map(1 -> one, 2 -> two, 3 -> three)
scala> val m1 = add(m, 0 -> "zero", 4)
m1: scala.collection.immutable.TreeMap[Int,String] =
Map(0 -> zero, 1 -> one, 2 -> two, 3 -> three)
scala> val m2 = add(m1, 4 -> "four", 4)
m2: scala.collection.immutable.TreeMap[Int,String] =
Map(1 -> one, 2 -> two, 3 -> three, 4 -> four)
scala> val m3 = add(m2, 5 -> "five", 4)
m3: scala.collection.immutable.TreeMap[Int,String] =
Map(2 -> two, 3 -> three, 4 -> four, 5 -> five)
scala> val m4 = add(m3, 0 -> "zero", 4)
m4: scala.collection.immutable.TreeMap[Int,String] =
Map(0 -> zero, 3 -> three, 4 -> four, 5 -> five)
あなたのニーズに合わせてもっと便利にすることは明らかです。
可能な重複http://stackoverflow.com/questions/3802370/java-time-based-map-cache -with-expiring-keys) – LaloInDublin
デフォルトのコレクションはありません。 scalaでは不変なオブジェクトを使うべきです。そのため、Mapはそのサイズを変更すべきではありません(addは別のMapを返します)。それでも、そのためのコレクションがあるかもしれません。 – pedrorijo91
注:scala 2.12はほとんど外に出ています(既に出ていますか?)、すでに2.11に移行しているはずです。 – pedrorijo91