zoukankan      html  css  js  c++  java
  • hashcode的作用

    根据官方文档,我们可以抽成以下的几个关键点:

      1.hashCode的存在主要是用于查找的快捷性,如hashtable,hashMap等,hashCode是用来

       在散列存储结构中确定对象的存储地址的

      2.如果两个对象相同,就要适用于equals(java.lang.Object)方法,那么这两个对象的hashCode一定

       相同

      3.如果对象的equals方法被重写,那么hashCode也尽量重写,并且产生hashCode使用的对象,一定要
       和equals方法中使用的一致,否则就会违法上面的第二条

      4.两个对象的hashCode相同,并不表示这两个对象相同,也就不一定适用于equals(java.lang.object)

       方法,只能够说明这两个对象在三列存储结构中,如hashtable,他们"存放于同一个篮子里面"

       补充:如果对于两个对象,如果没有重写hashCode(),则此时的hashCode()就是其存储地址

      注意:

        如果你在一个对象中,重写了equals()方法,但是对于你补充些hashCode()方法,会造成问题

        1.如果你比较两个对象,看这两个对象是否相同,但是这两个对象比较之前,会比较hashCode(),

        如果你没写,则这两个对象不相等

        2.如果你在Map<Object,Value>,你此时重写了Object的equals(),但是你没有hashCode(),

        则此时你想通过key(Object)想得到这个value,但是你在这两个对象是会比较这两个对象(key)

        相等,但此时一定会先比较这个对象的hashCode(),一般来说是不同,但此时判断这两个对象不同,

        hashCode()不同,则对对象一定不同

  • 相关阅读:
    洛谷 P1219 八皇后【经典DFS,温习搜索】
    洛谷 P1972 [SDOI2009]HH的项链【莫队算法学习】
    hihoCoder #1015 : KMP算法【KMP裸题,板子】
    UVa 10341
    UVa 11461
    Uva
    BZOJ 3097: Hash Killer I【构造题,思维题】
    BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】
    BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
    新版百度指数2013-12-23正式上线
  • 原文地址:https://www.cnblogs.com/wnbahmbb/p/6271504.html
Copyright © 2011-2022 走看看