equals、“==”与hashCode的介绍

来源:互联网 发布:淘宝换购拍下 编辑:程序博客网 时间:2024/06/04 19:39

1、Object类中的equals方法:用于判断对象的内存地址引用是否为同一个地址,相当于符号”==”。
2、因为Object为所有类的父类,若其他类中重写equals方法,一般情况下表示:对象的内容是否相等来判断对象是否相等。
3、hashCode()则表示求得对象的哈希码,一般用于集合当中,例如Map集合中的key、Set集合中的元素中。当往此类集合中存放对象时,先判断对象的hashCode值是否相等,若不相等,则直接放入;若hashCode值相等,则需要再去判断集合中有没有其他的元素与需要存放的对象是equals的,若equals值不相等,则放入;否则不存放。
4、在Map等集合中,对象的存储是通过一个数组和若干个链表来存放对象的(源码),hashCode决定了对象存放在数组中的哪个位置(index =( key.hashCode())% Entry[].length),而equals则用于判断相同hashCode值的对象是否为同一个对象。有一个原则,如果两个对象是equals的,则具有相同的hashCode值,反之,如果两个对象的hashCode值是相同的,其equals值不一定相等。