Clojure是否有记忆插入顺序的集合?
就像Java的一样。因此,与此相反:Clojure是否有记忆插入顺序的集合?,clojure,Clojure,就像Java的一样。因此,与此相反: (-> #{} (conj 1 2 3 4 5) vec) => [1 4 3 2 5] 你会得到: (-> ??? (conj 1 2 3 4 5) vec) => [1 2 3 4 5] 不在核心库中,但有 你知道他们为什么有有序地图?我刚刚测试了Clojure的本地地图,它似乎已经这样做了。也许我只是运气好。Core有排序映射,但没有排序映射。我相信本机映射在密钥很少(十个或更少?)的情况下会保留插入顺序,因为映射由不同的
(-> #{} (conj 1 2 3 4 5) vec)
=> [1 4 3 2 5]
你会得到:
(-> ??? (conj 1 2 3 4 5) vec)
=> [1 2 3 4 5]
不在核心库中,但有
你知道他们为什么有
有序地图
?我刚刚测试了Clojure的本地地图,它似乎已经这样做了。也许我只是运气好。Core有排序映射
,但没有排序映射
。我相信本机映射在密钥很少(十个或更少?)的情况下会保留插入顺序,因为映射由不同的数据结构支持,具体取决于它们有多少个密钥:
(use 'flatland.ordered.set)
(ordered-set 4 3 1 8 2)
=> #ordered/set (4 3 1 8 2)
(conj (ordered-set 9 10) 1 2 3)
=> #ordered/set (9 10 1 2 3)
(into (ordered-set) [7 6 1 5 6])
=> #ordered/set (7 6 1 5)