您的位置:首页 > 编程语言 > Java开发

java 中 equals() 相等的两个对象,hashcode() 一定相等

2016-12-23 15:29 387 查看
在java中,equals和hashcode是有设计要求的,equals相等,则hashcode一定相等,反之则不然。

为何会有这样的要求?

在集合中,比如HashSet中,要求放入的对象不能重复,怎么判定呢?

首先会调用hashcode,如果hashcode相等,则继续调用equals,也相等,则认为重复。

如果重写equals后,如果不重写hashcode,则hashcode就是继承自Object的,返回内存编码,这时候可能出现equals相等,而hashcode不等,你的对象使用集合时,就会等不到正确的结果

public
 
V put(K key, V value) {
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: