Set是如何不能加入重复值

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值