不一定,有可能对象只是重写了equals方法而没有重写hashCode方法。

解决方案 »

  1.   

    如果
    b_Object.a_Object.equals(b_Object)

    a_Object.hashCode()==b_Object.hashCode()但是
    a_Object.hashCode()==b_Object.hashCode()
    却不能说明
    b_Object.a_Object.equals(b_Object)原因是因为Object的equals方法比较的是两个对象的引用
        public boolean equals(Object obj) {
    return (this == obj);
        }
    而hashCode是根据一定算法计算出来的一个int类型的数值,这个算法不管如何精确,因为返回的是一个整数出现相同的结果,但是是不同的对象的情况肯定有的。打个比方,假设int类型的最大值是65535,如果你有65536个实例,怎么都有两个是相同的hashCode,不同的对象的。
      

  2.   

    两个对象值相同(x.equals(y) == true),那么有相同的hashcode??这句话对嘛?
    -------
    不对Integer i1=new Integer(1);
    Integer i2=new Integer(2);
    i1.equals(i2);//true
    i1.hashCode()==i2.hashCode();//false
      

  3.   

    注:上面所说的是在没有重载hashCode()和equals()方法的前提下
      

  4.   

    Integer i1=new Integer(1);
    Integer i2=new Integer(1);
    i1.equals(i2);//true
    i1.hashCode()==i2.hashCode();//false
      

  5.   

    To jFresH_MaN(TM) 上面的例子中 i1.hashCode()==i2.hashCode();应该是true啊。