通过下面例子我们可以看出,两个不同的字符串,经过排序后,生成了相同顺序的字符数组。
String str1 = "hello";
String str2 = "helol";
char[] chars = str1.toCharArray();
Arrays.sort(chars);
char[] chars2 = str2.toCharArray();
Arrays.sort(chars2);
如果直接通过 char[] 的toString方法,则他们的hashcode是不一样的
String ss1 = chars.toString();
String ss2 = chars2.toString();
System.out.printf("ss1: %s, hashcode : %d n",ss1,ss1.hashCode());
System.out.printf("ss2: %s, hashcode : %d n",ss2,ss2.hashCode());
如果通过new String() 创建出来的String hashcode()是一样的
String s = new String(chars);
String s1 = new String(chars2);
System.out.println(s.hashCode());
System.out.println(s1.hashCode());
打印结果如下
ss1: [C@1b6d3586, hashcode : 1905985623 ss2: [C@4554617c, hashcode : 1483616735 96481132 96481132



