equals()和hashcode()

来源:互联网 发布:mac下载游戏的网站 编辑:程序博客网 时间:2024/06/05 02:53

        java中,在定义bean对象时,一般会定义这两个方法,是否两个方法必须定义呢?两者又是如何协同的呢?

        equals方法如果返回ture,代表两个对象‘’相等‘’,这里的相等指的是定义equals方法时指定的属性值相等,但并不一定相同,比如两个对象equals返回true,但是没有相同的hashcode,你会发现添加进set集合里会有两个相等的对象。

        同样,hash相等,但两个对象并一定相同,比如hashmap,如果hash相等,对象会落到同一个桶中,即hashtable中的碰撞。hashtable在查找一个对象时,会先计算hash值来确定对象落在哪个桶里,然后通过equals方法找到对象。

0 0
原创粉丝点击