欢迎!请访问 关于 页面获取更多关于这个网站如何工作的信息。
在我看来,https://ask.clojure.org/index.php/12073/update-vals-not-preserving-sorted-maps 是一个问题的原因,是因为 PersistentTreeMap 没有实现 IEditableCollection。
PersistentTreeMap
IEditableCollection
所以为了满足我的好奇心,这是为什么?
PTM(有序映射)是用红黑树实现的。临时数据(IEditableCollection)需要一种方法在持久化和临时之间以 O(1) 速度切换,并在临时批量更新期间以比 O(n log n) 更快的速度(平均而言)收集值。
这早于我加入 Clojure 团队的时候,但我想 PTM 红黑树实现可能无法提供这些性能保证。或者也许可能提供,但是因为太难而值得做。我假设是前者(由于平衡),但无法确定。