這是我第一次使用這個網站,所以我很抱歉,如果我沒有正確使用它。請讓我知道。Hashtable重寫
無論如何,我有一個帳戶對象,需要2個字符串...一個acctName和lastName(代碼如下)。
我想插入這個對象到一個哈希表中,鍵是acctName,我想用多項式來減少碰撞。我聽說我必須重寫hashCode()和等同的方法。我相信我已被正確覆蓋,但我不確定它是否正確,因爲它似乎沒有被調用。有人可以告訴我,如果我這樣做是正確的(覆蓋在正確的位置,並正確添加),並向我解釋如何添加後打印?
感謝並期待在未來爲社區做出貢獻!
類--->帳戶
public class Account
{
private String acctName;
private String lastName;
public Account(String acctName, String lastName)
{
this.acctName= acctName;
this.lastName= lastName
}
@Override
public int hashCode() {
return acctName.hashCode() + lastName.hashCode();
}
@Override
public boolean equals (Object otherObject) {
if (!(otherObject instanceof Account)) {
return false;
}
if (otherObject == this) {
return true;
}
Account accountHolder = (Account) otherObject;
return acctName.equals(accountHolder.acctName) && lastName.equals(accountHolder.lastName);
}
類---->驅動
public void insertInto()
{
Hashtable<String,Account> hash=new Hashtable<String,HoldInformation>();
Account account= new Account ("Deposit", "Jones");
Account account2= new Account ("Withdraw", "Smith");
hash.put ("deposit", account);
hash.put ("Withdraw", account2);
}
吸氣劑INSIDE帳戶對象EDIT
public String testGetter()
{
return acctName.hashCode() + lastName.hashCode();
}
啊是有道理的,我的問題是,我的客戶對象需要acctName和lastName到一個對象。正如我所說,acctName是關鍵。那麼,如果我在Account對象中擁有我需要的所有東西,那麼當聲明散列表時,我可以使用什麼關鍵字段? – michael
或者我應該將所有內容都放入Account對象而不是驅動程序中?謝謝! – michael
在你的類中添加一個getter方法,它將返回「」acctName.hashCode()+ lastName.hashCode();「」。然後使用返回值作爲散列表的關鍵字。 –