我的問題涉及到改變一個表達式在java中使其多態。該類稱爲csHash,用於根據給定的數據類型DT和給定的鍵類型KT創建哈希表。現在,在類中的幾個方法(刪除,搜索,插入等)中,該方法使用equals函數,該函數在非多態版本中僅使用String(因爲非多態版本中的密鑰是類型的串)。我在想的是創建一個等於方法寫成以下代碼的行。我的問題是......它是一種檢驗平等的有效手段嗎?創建一個多態的等於表達式
public boolean equals(Object x) {
String i;
i = new String[1];
String y;
y = new String[1];
i == i + this; // use the + operator to add 'this' object
y == y + (findkey(other))x; // do the same for other object. findkey methods returns KT for a given object, i use this return to typecast the Object x.
int j = i.compareTo(y); // use built in String compare method
if(j = 0) {return true;} // use if else to determine if they are equal
else {return false;}
}
這裏equals的目的不是要比較兩個哈希表,而是兩個不同的同一類對象,即兩個不同的學生通過比較該類(名稱)的關鍵字或比較兩個汽車類的對象比較他們的關鍵(MPG)。這也是一個自制的哈希類,它不利用內置的Java。 – JediOfTheGrey
平等的方法是你的CSHash類中的類成員函數,對嗎?如果是這樣,那麼你需要使用平等的方法來比較CSHash的兩個對象。由於散列表由鍵和值組成,因此您需要比較由鍵和值組成的entrySet。您不需要使用Java的內置entrySet(),但是您可以爲CSHash類創建自己的entrySet()方法。如果你只需要比較鍵,那麼你可以簡單地覆蓋關鍵部分的平等方法。 – tonga