我创建了一个类Person
(如书中所说)来保存从键盘输入的人的姓名和姓氏,然后还有另一个类PhoneNumber
将国家代码、区号和一个人的号码封装为字符串。
Person 旨在用作 Hashmap 中的键。
类BookEntry
封装了Person
和PhoneNumber
。许多BookEntry
对象组成了一个代表电话簿的 HashMap。
Person
实现Comparable<Person>
所以它包含CompareTo(Person)
方法。后来书中增加了equals(Object anotherPerson)
方法。
我的问题是,CompareTo
比较两个键的方法还不够吗?还是 HashMap<> 的内部机制要求我包含equals()
比较两个键的方法?
相比于()
public int compareTo(Person person) {
int result = lastName.compareTo(person.lastName);
return result==0? firstName.compareTo(person.firstName):result;
}
等于()
public boolean equals(Object anotherPerson){
return compareTo((Person)person)==0;
}