HashSet存储的对象问题

当HashSet存储对象时需重新对象对应的类中的equals()方法和hashCode()方法。

package collection;


import java.util.HashSet;
import java.util.Set;
public class TestHashSet {
public static void main(String[] args) {
Set<Name> set=new HashSet<Name>();
set.add(new Name("abc", "123"));
System.out.println(set.contains(new Name("abc", "456")));//结果为true
set.add(new Name("abc", "456"));
System.out.println(set.size());//结果为1
}


}
class Name{
private String first;
private String last;
public Name(String first, String last) {
super();
this.first = first;
this.last = last;
}
/*
* (non-Javadoc)假设以first字段作为两个对象的相等的条件
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this==obj) {
return true;
}

if (obj.getClass()==Name.class) {
Name name = (Name) obj;
return name.first.equals(first);
}
return false;
}
/*
* (non-Javadoc)hashCode统一返回first的hashCode
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
return first.hashCode();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值