Java 以任何顺序给定的同一组字符的唯一哈希?

Java 以任何顺序给定的同一组字符的唯一哈希?,java,string,hash,anagram,Java,String,Hash,Anagram,考虑这个查找字谜的例子 aabc abca 它们都是字谜,我正在寻找一种方法,使它们由字符生成的哈希相同且唯一 唯一性很重要,这样就不会有两个不同的字符串aabc和xyaq生成相同的散列 我不知道这一点,但是我在这里学习我需要查找的内容,对字符串中的字符进行排序并将其用作哈希。字符串将具有相同的哈希值,如果它们是彼此的字谜: String anagramHash(String str) { char[] chars = str.toCharArray(); Arrays.sor

考虑这个查找字谜的例子

aabc
abca
它们都是字谜,我正在寻找一种方法,使它们由字符生成的哈希相同且唯一

唯一性很重要,这样就不会有两个不同的字符串
aabc
xyaq
生成相同的散列


我不知道这一点,但是我在这里学习我需要查找的内容,对字符串中的字符进行排序并将其用作哈希。字符串将具有相同的哈希值,如果它们是彼此的字谜:

String anagramHash(String str) {
    char[] chars = str.toCharArray();
    Arrays.sort(chars);
    return new String(chars);
}
如果您有不在BMP()上的代码点,这可能不起作用


或者,生成一个直方图并将其用作散列。

您要寻找的是一个完美的散列函数(假设
在有限
集合中的“aabc”.equals(“abca”)
,并一起表示
集合中的一个不同元素。你的问题定义必须是有限的,任何人都可以提出解决方案。哈希基本上永远不会是唯一的。要么找出一种可以接受的方法,要么找到一些非散列方法。不同的字符串可以有相同的散列,因此if和only if部分不成立。