在HashMap中,如果要比较key是否相等,要同时使用这两个函数!因为自定义的类的hashcode()方法继承与Object类,其hashcode码为默认的内存地址,这样即使有相同的含义的两个对象,比较也是不相等的,HashMap中的比较key的过程:先求出key的hashcode(),比较其值是否相等,若相等在比较equals(),若还相等则认为是相等的,若equals()不相等则认为他们不相等。
如果只重写了hashcode()不重写equals( )方法,当比较equals( )时只是看他们是否为同一对象(即进行内存地址的比较)所以必定要两个方法一起重写。
HashMap( )用来判断key是否相等的方法,其实是调用了HashSet 判断加入元素是否相等。重载hashCode( )是为了对同一个key,能得到相同的Hash Code,这样HashMap就可以定位到我们指定的key上。重载eqals( )是为了向HashMap表明当前对象和key上所保存的对象是相等的,这样我们才真正的获得了这个可以所对应的这个键值对。