在不关心订单的情况下对集合进行散列的最有效方法是什么?

时间:2018-10-17 06:40:46

标签: java arrays string hash

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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