如果hashCode值相同,那object”可能”相同(equal);如果hashCode值不相同,那object”一定”不相同。不明白

解决方案 »

  1.   

    String类用下面的算法来计算其hashcode:int hash = 0;
    for (int i = 0; i < length(); i++)
       hash = 31 * hash + charAt(i);
    String s = "Ok";
    StringBuffer sb = new StringBuffer(s);
    System.out.println(s.hashCode() + " " + sb.hashCode());String t = new String("Ok");
    StringBuffer tb = new StringBuffer(t);
    System.out.println(t.hashCode() + " " + tb.hashCode());s和t的hashCode是相同的,sb和tb是不相同的
      

  2.   

    http://blog.163.com/tangyang_personal/blog/static/4622961320082269256877/
      

  3.   

    hashcode不能相同吧,相同的话一定就是一个对象
      

  4.   

    因为String重写了hashcode方法,它的算法根object的hashcode方法不一样,它是由字符串内容来计算hashcode,这是因为string重写了equals方法!不一样的对象可能他们的hashcode相等,纪律很小,关于这方面的问题没什么研究,楼下继续!
      

  5.   

    equal 必须是值相同、地址相同
      

  6.   

    好像,,HASHCODE指向的是一个地址桶,,而一个桶里面可以存放多个数据,,,
    而EQUAL()为TRUE,则就要求,一定要在这个地址桶里面的同一个地址上,
    而EQUAL()为FALSE,则可能数据在同一个桶里面的不同地址上