为什么Scala中没有可变的TreeMap?

soc*_*soc 38 collections tree scala mutable map

它是否缺乏时间,某些技术问题还是有理由不存在?

Rex*_*err 27

它只是一个缺失的案例,可能最终会被填充.没有理由不这样做,并且在某些情况下它会比不可变树快得多(因为修改需要使用不可变树的log(n)对象创建和只有1个可变树).


编辑:事实上它在2.12中填写.

可变树图.

(也有相应的Set.)


Adr*_*ian 6

同时您可以使用Java TreeMap,这正是您所需要的.

val m = new java.util.TreeMap[String, Int]()
m.put("aa", 2)
m.put("cc", 3)
Run Code Online (Sandbox Code Playgroud)

  • `import collection.JavaConverters._`后跟`new java.util.TreeMap [String,Int]().asScala`.您将获得SortedMap行为和更高阶函数,但不会获得SortedMap函数. (4认同)
  • Java的缺少所有高阶函数,所以它不是那么有趣...... (2认同)

Pet*_*lák 6

我认为原因是拥有一个可变的变体并没有带来很大的好处.当可变映射可能更高效时,在其他答案中提到了一些情况,例如在替换已存在的值时:可变变量将节省新节点的创建,但复杂性仍然是O(log n).

如果要保留对映射的共享引用,可以使用ImmutableMapAdaptor将任何不可变映射包装到可变结构中.