关于Map使用自定义类做为 key时的问题
答案:1 悬赏:70 手机版
解决时间 2021-01-06 11:28
- 提问者网友:蓝琪梦莎
- 2021-01-05 20:23
关于Map使用自定义类做为 key时的问题
最佳答案
- 五星知识达人网友:舍身薄凉客
- 2021-01-05 20:39
这个需要重写Student类的hashCode和equals方法。这两个方法是集成自超类Object的。
HashMap默认是使用hashCode对比传入的key是否一致,如果hashCode一致会用equals进行对比,如果还是一致那么认为是同一个key。
你的Student类有age和name两个成员变量,可以根据这两个变量设定hashCode和equals方法。
public int hashCode(){
return name.hashCode() + age;
}
public boolean equals(Object o){
return (o instanceof Student) &&
(age ==((Student)o).age) &&
(name == null && ((Student)o).name == null ||
name.equals(((Student)o).name)
);
}
HashMap默认是使用hashCode对比传入的key是否一致,如果hashCode一致会用equals进行对比,如果还是一致那么认为是同一个key。
你的Student类有age和name两个成员变量,可以根据这两个变量设定hashCode和equals方法。
public int hashCode(){
return name.hashCode() + age;
}
public boolean equals(Object o){
return (o instanceof Student) &&
(age ==((Student)o).age) &&
(name == null && ((Student)o).name == null ||
name.equals(((Student)o).name)
);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯