java - 在不关心顺序的情况下对集合进行哈希处理的最有效方法是什么?

标签 java arrays string hash

我有很多字符串,我需要检查有多少对包含相同的字符。

目前,我的策略是创建一个 int[128] 字符,并为字符串中的每个字符增加字符计数。因此,最后,chars 将是一个 128 大小的数组,每个索引映射到一个字符编号,以及其计数值。

然后我会对字符进行哈希处理,例如使用 Java 的 Arrays.hashCode() 函数。

有没有更有效的方法来解决这个问题?我尝试在第一个循环中对字符串中的每个字符进行异或(与构建字符一起),这有效(但在我的分配测试用例中速度非常慢;我怀疑它们是为了击败简单的异或哈希函数而设计的)。有没有有效的哈希函数?

最佳答案

对每个字符串中的字符进行排序。也就是说,你先销毁所有的订单信息。之后,标准的 HashMap 就足够了。

关于java - 在不关心顺序的情况下对集合进行哈希处理的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848679/

相关文章:

c - %c 与 %s 的实际差异

javascript - Notepad++ 的字符串转义/取消转义插件

java - 将字符串拆分为 3 部分并转换为 int

java - 如何结束嵌套循环

php - json 输出不符合预期

java - Java中如何删除关系

java - 从 String[] 中提取数字

使用字符串将十进制数系统转换为二进制数系统

java - 部署 Spring Boot Fat jar

java - 在 Java 字符串中对二进制数据进行编码