我想编写一个散列函数,该函数接受ABC和BCA或BAC之类的输入(基本上是输入字符的任何顺序,但是相同的字符)并返回相同的值。我考虑过要返回其ASCII值的总和,但这不是唯一的。
即使它不是完全唯一的,也可以使用最佳近似值(它们将用作Java HashMap中的键。因此,任何搜索最终都将最终也比较实际值。因此,它的键不是严格要求必须唯一,但是越接近唯一性,HashMap的功能就越好)
答案 0 :(得分:1)
您可以从char
创建一个String
数组,对其进行排序,然后调用该数组的hashCode:
String bca = "BCA";
char[] chars = bca.toCharArray();
Arrays.sort(chars);
int hashCode = Arrays.hashCode(chars);