Clojure是否有记忆插入顺序的集合?

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有排序映射,但没有排序映射。我相信本机映射在密钥很少(十个或更少?)的情况下会保留插入顺序,因为映射由不同的

就像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有
排序映射
,但没有
排序映射
。我相信本机映射在密钥很少(十个或更少?)的情况下会保留插入顺序,因为映射由不同的数据结构支持,具体取决于它们有多少个密钥:
(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)