我创建了一个类Person
(正如本书所说)来保存从键盘输入的人的名字和姓氏,然后还有另一个类PhoneNumber
,它将国家代码,地区代码和人数封装为串。
此人旨在用作Hashmap中的键。
类别BookEntry
封装了Person
和PhoneNumber
。很多BookEntry
对象组成了一个表示电话簿的HashMap。什么时候包括什么?
Person
implements Comparable<Person>
所以它包含CompareTo(Person)
方法。后来该书增加了equals(Object anotherPerson)
方法。
我的问题是,是不是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'类型。 – adranale
我知道。如果我传递'String',程序崩溃:) –