【发布时间】:2012-06-06 11:01:36
【问题描述】:
我创建了一个类Person(正如书中所说)来保存从键盘输入的人的姓名和姓氏,然后还有另一个类PhoneNumber,它封装了国家代码、区号和号码一个人的字符串。
Person 旨在用作 Hashmap 中的键。BookEntry 类封装了Person 和PhoneNumber。很多BookEntry 对象组成了一个代表电话簿的HashMap。
Person 实现了Comparable<Person>,因此它包含CompareTo(Person) 方法。后来本书添加了equals(Object anotherPerson)method。
我的问题是,CompareTo 方法不足以比较两个键吗?还是 HashMap 的内部机制要求我包含 equals() 方法来比较两个键?
compareTo()
public int compareTo(Person person) {
int result = lastName.compareTo(person.lastName);
return result==0? firstName.compareTo(person.firstName):result;
}
equals()
public boolean equals(Object anotherPerson){
return compareTo((Person)person)==0;
}
【问题讨论】:
-
equals()的参数不一定是 Person 或其子类。 -
您的
equals()实施不完整。您必须检查参数对象是否实际上是Person类型。 -
我知道。如果我通过
String,程序崩溃:)
标签: java hashmap comparable compareto