A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1黑马币

评分

参与人数 3黑马币 +44 收起 理由
草帽123 + 32 赞一个!
豆豆的小幸福 + 10
wxx11142 + 2 赞一个!

查看全部评分

10 个回复

倒序浏览
和存储自定义一样的
回复 使用道具 举报
equals  and hashCode
回复 使用道具 举报
是通过两个方法,hashCode和equals来完成。
如果元素的哈希值相同,才会判断equals是否为true,如果哈希值不同,则不会调用equals方法
例如学生类中保证学生唯一的两种方法编写如下:
public int hashCode(){
    return name.hashCode()+age*34;
}

public boolean equals(Object obj){
     if(!(obj instanceof Student))
           return false;
     Student s=(Student)obj;
      return this.name.equals(s.name) && this.age==s.age;
}
回复 使用道具 举报
在eclipse里面有的  选中即可
回复 使用道具 举报
在 eclipse的  source--> generate  hashCode() and equals()
回复 使用道具 举报
上面说的都是自定义对象
不是自定义对象就是是系统给的那些类
通过查看API,系统给定的那些类都已经重写了Object类中hascode和equals方法
所以在存储时也不必再像自定义类一样手动重写hascode和equals方法
回复 使用道具 举报
{:2_32:}{:2_32:}{:2_32:}{:2_32:}
回复 使用道具 举报
像String类一样,查看api你能看到它已经重写了hashCode和equals方法
回复 使用道具 举报
在自定义类中重写hashCode和equals方法
回复 使用道具 举报
因为HashSet判断元素是不是唯一,默认用的是hashcode 地址,所以如果存储的不是自己定义的,判断条件就是你存储的对象地址是不是一样的了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马