//当添加自定义对象时要重写hashCode 与equals两个方法
Set 的add方法 比较的是对象的hashCode方法返回的值
重写hashCode方法就必须重写equals方法(java中自定义对象的比较原理)对象的比较:
add方法的参数是个对象。集合会调用这个对象的equals、hashCode方法和已经存在的对象比较
hashCode先比较,如果一样再调用equals
//System.out.println 调用时会调用toString方法
//set.add新添加对象的内部原理
MyClass c2=new MyClass(2);
for(Object myclass:set){
if(myclass.hashCode()==c2.hashCode()){
if(myclass.equals(c2)){
return ;
}else{
//equals不一样也添加成功
}
}else{
//hashCode不一样直接添加成功
}
}
//HashSet 使用add方法过滤重复,使用hashCode、equals方法
//ArraryList、linkedlist、HashSet
//需要比较对象时(remove、contains等方法,ArraryList的indexOf方法),使用hashCode、equals方
法
本文详细解析了在Java中自定义对象加入Set集合时hashCode与equals方法的重要性。通过实例展示了如何正确实现这两个方法以确保对象的唯一性,并解释了它们在集合操作中的作用。
5102

被折叠的 条评论
为什么被折叠?



