我創建了一個類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',程序崩潰:) –