hashCode()方法的作用?
参考解答
hashCode()是为了配合HashMap等集合类实现集合中对象的快速查找。
Object的hashCode()的计算,肯定唯一的吗?
参考解答
不唯一:
final Object obj = new Object();
final int target = obj.hashCode();
Object collisions;
long ct = 0;
do {
collisions = new Object();
++ct;
if (collisions.hashCode() == target) {
System.out.println(ct+": "+obj+" - "+collisions);
break;
}
} while (collisions.hashCode() != target && ct<10*1000*1000*1000L);
运行结果:
1480398845: java.lang.Object@24ee5d13 - java.lang.Object@24ee5d13
其它对象的hashCode不唯一可能性更高,例如String:
System.out.println("ac".hashCode()); // 3106
System.out.println("bD".hashCode()); // 3106