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

results matching ""

    No results matching ""