关于HashSet添加元素问题,大神来帮我看看

SKY862390450 2019-11-28 10:52:11
import java.util.*;
class employee{
private String id;
private String name;
private String age;
private String salary;
public employee(String id,String name,String age,String salary){
this.id=id;
this.name=name;
this.age=age;
this.salary=salary;
}
public String toString(){
return id+":"+name+","+age+","+salary+"";

}
public int hashcode(){
return id.hashCode();
}
public boolean equals(Object obj){
if(this==obj){
return true;
}
if(!(obj instanceof employee)){
return false;
}
employee emp=(employee)obj;
boolean b=this.id.equals(emp.id);
return b;

}

}
public class information {

public static void main(String[] args) {


HashSet hs=new HashSet();
employee emp1=new employee("5","张三","25","3500");
employee emp2=new employee("2","李四","30","4000");
employee emp3=new employee("5","王五","40","5000");
hs.add(emp1);
hs.add(emp2);
hs.add(emp3);
System.out.print(hs);

}


}

我改写了hashcode()和equals()方法,为什么emp1和emp3这两个id都为5的对象都添加进去了?怎么不起作用?
...全文
241 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
博渊同学 2019-12-07
  • 打赏
  • 举报
回复
没重写 hashCode 方法 @Override public int hashCode() { return super.hashCode(); }
js0328 2019-12-01
  • 打赏
  • 举报
回复
因为需要属性值完全相同,你有一个不同,还是不一样
SKY862390450 2019-11-28
  • 打赏
  • 举报
回复
引用 2 楼 qq_39936465的回复:
[quote=引用 1 楼 SKY862390450 的回复:]
[2:李四,30,4000, 5:张三,25,3500, 5:王五,40,5000]
这是输出后的结果,两个id都为5的对象都添加进去了,这是怎么回事?
public int hashcode(){ return id.hashCode(); } 方法中C需要大写,不然不算重写[/quote] 厉害了,我说我怎么找不到错误呢
SKY862390450 2019-11-28
  • 打赏
  • 举报
回复
厉害了,我说怎么找不到错误
Valerie00 2019-11-28
  • 打赏
  • 举报
回复
你只用到了employee的构造器
qq_39936465 2019-11-28
  • 打赏
  • 举报
回复
引用 1 楼 SKY862390450 的回复:
[2:李四,30,4000, 5:张三,25,3500, 5:王五,40,5000]
这是输出后的结果,两个id都为5的对象都添加进去了,这是怎么回事?
public int hashcode(){ return id.hashCode(); } 方法中C需要大写,不然不算重写
SKY862390450 2019-11-28
  • 打赏
  • 举报
回复
[2:李四,30,4000, 5:张三,25,3500, 5:王五,40,5000]
这是输出后的结果,两个id都为5的对象都添加进去了,这是怎么回事?
天涯若风 2019-11-28
  • 打赏
  • 举报
回复
方法的重写加上@Override,这是规范,虽然有时候可能不加程序也能运行

    @Override
    public int hashCode() {
        return super.hashCode();
    }

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧