【发布时间】:2017-12-13 15:02:21
【问题描述】:
就像 Java 的 LinkedHashSet。所以不要这样:
(-> #{} (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
就像 Java 的 LinkedHashSet。所以不要这样:
(-> #{} (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
不在核心库中,但有this one。
(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)
【讨论】:
ordered-map吗?我只是在测试 Clojure 的原生地图,它的行为似乎已经如此。也许我只是走运了。
sorted-map,但没有ordered-map。我相信当您只有很少(十个或更少?)键时,本机映射会保留插入顺序顺便说一句,因为映射由不同的数据结构支持,具体取决于它们有多少键:stackoverflow.com/a/16516760