【发布时间】:2010-11-17 01:20:45
【问题描述】:
Clojure 中是否有数据结构可以满足这个要求:
- 表示键值对,即是一个映射;
-
get操作使用少于O(n); - 按添加键的顺序保存键。
【问题讨论】:
Clojure 中是否有数据结构可以满足这个要求:
get 操作使用少于 O(n);【问题讨论】:
我也需要这个。我通常选择 map + a seq (包含键的顺序)。你可以去非持久化并使用 LinkedHashMap,但我认为如果你这样做,上帝会杀死一只小猫。
Chris Houser 的finger tree implementation 是否符合要求?
【讨论】:
罢工>
user=> (sorted-map-by (fn [_ _] -1) :a 1 :b 2 :c 3 :d 4)
{:d 4, :c 3, :b 2, :a 1}
使用带有始终返回 -1 的比较器的排序映射。最新的条目将位于地图的开头,而最旧的条目将位于最后。
错误的答案。请参阅下面的 cmets。
【讨论】:
nil?
sorted-map 使用比较器来确定密钥是否相等。