【发布时间】:2021-06-18 16:12:19
【问题描述】:
我一直在阅读有关在 java 中更改 hashCode() 函数的内容。
有一件事我真的不明白:
如果我有一个类 Person,并将 HashMap 存储在一个类中,例如:Map<String, Person> map = new HashMap<>(); 定义的 hashCode() 函数有什么作用吗?
只是据我了解,它会使用 String 的 hashCode,而不是 Person 的 HashCode() 对吗?
所以如果我有这门课
public class Person {
private int age;
private String name;
public boolean equals {...}
public int hashCode() {
return Objects.hash(age, name);
}
}
我主要存储这些对象的地图,如下所示:
public class Main {
public static void main (String [] arg) {
Map <String, Person> pers = new HashMap<>();
Person p = new Person("Peter", 21); //Imagine I have this constructor
pers.put(p.getName(), p);
}
}
这会使用Person 类中定义的 hashCode() 函数吗?
【问题讨论】:
-
不是你问的那样:地图的键不是
Person,而是String。 -
@DaveNewton 正是我想知道的,谢谢