Kev*_*han 2 hash clojure hashset
每当我使用文字符号在Clojure中定义哈希集时,它就会像这样扰乱周围的值:
user=> #{1 2 4 6 5}
Run Code Online (Sandbox Code Playgroud)
它返回了这个:
#{1 4 6 2 5}
Run Code Online (Sandbox Code Playgroud)
但是当我放
user=> #{1 4 6 2 5}
Run Code Online (Sandbox Code Playgroud)
它返回:
user=> #{1 4 6 2 5}
Run Code Online (Sandbox Code Playgroud)
这背后的逻辑是什么?
根据定义,集合是无序的.因此,作为界面问题,顺序是任意的.但是,哈希集无疑会将其成员存储在某种哈希表中.因此,枚举散列集成员的自然方法是迭代内部散列表.因此,生成元素的顺序取决于元素的哈希值,以及这些值如何映射到基础哈希表.
这就是为什么元素的"排序"似乎是随机的,但是可重复的.
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |