//当添加自定义对象时要重写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方
法