java map的key为实体类时,需要重写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)
);
}
转载于:https://my.oschina.net/u/1988057/blog/823451