欢迎!请查看关于页面了解更多有关此功能的信息。
在我看来,https://ask.clojure.org/index.php/12073/update-vals-not-preserving-sorted-maps 作为一个问题存在,是因为 PersistentTreeMap 没有实现 IEditableCollection。
PersistentTreeMap
IEditableCollection
为了满足我的好奇心,为什么会这样呢?
PTM(有序映射)使用红黑树实现。临时(可编辑集合)需要一种方法以 O(1) 的方式从持久化切换到临时,反之亦然,并且在 O(n log n) 以上的方式(平均)收集批更新期间的值。
这在我参与 Clojure 团队之前就已经存在,但我推测 PTM 红黑树实现无法提供这些性能保证。或者也许可能是可能的,但太难并值得去做。我假设是前者(由于重新平衡),但无法确定。