黑马程序员技术交流社区
标题:
HashSet存储的不是自定义对象时时怎么保证元素的唯一性的
[打印本页]
作者:
天晴了吗
时间:
2015-11-24 23:37
标题:
HashSet存储的不是自定义对象时时怎么保证元素的唯一性的
作者:
天晴了吗
时间:
2015-11-24 23:39
和存储自定义一样的
作者:
Myth、骞
时间:
2015-11-25 13:13
equals and hashCode
作者:
xi~yan
时间:
2015-11-25 19:06
是通过两个方法,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;
}
作者:
jymheima
时间:
2015-11-26 14:25
在eclipse里面有的 选中即可
作者:
jymheima
时间:
2015-11-26 14:27
在 eclipse的 source--> generate hashCode() and equals()
作者:
wunaihaoye
时间:
2015-11-27 12:04
上面说的都是自定义对象
不是自定义对象就是是系统给的那些类
通过查看API,系统给定的那些类都已经重写了Object类中hascode和equals方法
所以在存储时也不必再像自定义类一样手动重写hascode和equals方法
作者:
zhauibuzhai
时间:
2015-11-27 13:56
{:2_32:}{:2_32:}{:2_32:}{:2_32:}
作者:
周亚飞
时间:
2015-12-14 14:30
像String类一样,查看api你能看到它已经重写了hashCode和equals方法
作者:
yyt199108
时间:
2015-12-16 19:41
在自定义类中重写hashCode和equals方法
作者:
boboyuwu
时间:
2015-12-20 12:13
因为HashSet判断元素是不是唯一,默认用的是hashcode 地址,所以如果存储的不是自己定义的,判断条件就是你存储的对象地址是不是一样的了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2