在clojure中设置的文字哈希

时间:2015-08-10 22:19:45

标签: hash clojure hashset

每当我使用文字符号在Clojure中定义一个哈希集时,它会像这样扰乱周围的值:

user=> #{1 2 4 6 5}

它返回了这个:

#{1 4 6 2 5}

但是当我把

user=> #{1 4 6 2 5}

它返回了:

user=> #{1 4 6 2 5}

这背后的逻辑是什么?

1 个答案:

答案 0 :(得分:9)

根据定义,集合是无序的。因此,作为界面问题,顺序是任意的。但是,哈希集无疑会将其成员存储在某种哈希表中。因此,枚举散列集成员的自然方法是迭代内部散列表。因此,生成元素的顺序取决于元素的哈希值,以及这些值如何映射到基础哈希表。

这就是为什么元素的“排序”似乎是随机的,但是可重复的。