hash - clojure 中的文字哈希集

标签 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}

这背后的逻辑是什么?

最佳答案

根据定义,集合是无序的。因此,作为接口(interface)问题,顺序是任意的。但是,哈希集无疑会将其成员存储在某种哈希表中。因此,枚举哈希集成员的自然方法是遍历内部哈希表。因此,生成元素的顺序将取决于元素的哈希值,以及这些值如何映射到底层哈希表。

这就是为什么元素的“排序”看起来是随机的,但却是可重复的。

关于hash - clojure 中的文字哈希集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31930132/

相关文章:

c++ - 您如何搜索具有哈希名称的 vector 以进行匹配?

hash - Crypto - Express.js PBKDF2 HMAC-SHA1 就足够了吗?

c# - 为什么在 C# 中有 HashSet 而没有 Set?

将迭代器中的项目添加到数据集时的 Java 错误 - 重复单个值

string - 如何在给定 32 字节 md5 字符串的情况下获得 n 个点的一致哈希/谱

perl - 将散列 (HoH) 的散列复制到键/值对中并返回到 perl

clojure - Ring wrap-json-body 不是将 json 数据转换为关键字映射,而是转换为字符串映射

error-handling - 我可以在前置条件和后置条件中包含一条消息吗

clojure - Clojure atom 中的长时间运行函数

java - HashSet 是否在内部进行排序工作?