补充HashSet集合hashCode和equals的重写,保证元素的不重复

1.HashSet(元素不一定有序(即不一定按添加的顺序输出));数据结构是哈希表,线程是非同步的,
保证元素唯一性原理。判断元素的hashCode值是否相同
如果相同,还会继续判断元素的equals方法,是否为true


1.1  
HashMap<String,String> map = new HashMap<String,String>();
 Iterator<String> it = map.keySet().Iterator();//获取关键字
while( it.hasNext ){
    String id = it.next(); //取出关键字
    String name =  map.get(id);
 }


1.2 //保证元素的唯一性(不重复存入)
用HashSet集合时要重写HashCode()和equals()方法;

如;

class Student{


属性;姓名和年龄
get和set方法


Student存入HashSet集合时
要重写HashCode()和equals()方法,保证元素的唯一性
public int hashCode(){  
  
   return this.name.hashCode() + 60*age;  
}  


public boolean equals(Object obj){  
if(!(obj instanceof Person)){  
return false;  
   }  
    
   Student stu=(Student)obj;  
  
   //认为名字相同并且年龄一样大的两个对象是一个  
return this.name.equals(stu.name) && this.age == stu.age;  
}  
}


方法重写之后,执行的顺序
[1]. 如果元素的hashCode值相同,才会使用equals()方法进行判断。
[2]. 如果元素的hashCode值不同,不会调用equals()方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值