HashSet去重---重写hashcode()方法与equals()方法
程序员文章站
2024-03-23 15:03:04
...
1.判断set中的哈希表是否已存在要添加的对象,首先调用对象的hashcode方法,得出对应的hash值.
2.如果已存在,则会调用equals()方法判断各个属性的值是否相等,若属性值全部相等,返回true,视为相同元素,不添加到Hashset.如果不相等,则会添加到Hashset.
public class Bean {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
int hash = 0;
hash = (id!=null?id.hashCode():0);
hash = 31 * hash + (name!=null?name.hashCode():0);
return hash;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if(obj !=null && obj.getClass() == Bean.class) {
Bean bean = (Bean)obj;
if(this.getId() == bean.getId()&&this.getName() == bean.getName()) {
return true;
}
}
return false;
}
}
推荐阅读
-
HashSet去重---重写hashcode()方法与equals()方法
-
HashMap存储原理以及与hashcode、equals方法的关系
-
HashMap存储原理以及与hashcode、equals方法的关系
-
List排除、去重与equals和hashCode方法重写
-
重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源(三)
-
讲解:为什么重写equals时必须重写hashCode方法
-
hashCode方法解释,重写equals,hashCode方法
-
为什么重写equals方法时也要重写hashCode方法
-
equals()与hashcode()方法
-
为什么重写EQUALS时必须重写HASHCODE方法