Po raz pierwszy używam tej strony, więc przepraszam, jeśli nie używam jej poprawnie. Proszę, daj mi znać.Przesłanianie hasłem
W każdym razie mam obiekt konta, który przyjmuje 2 ciągi ... Nazwa funkcji i nazwisko (kod jest poniżej).
Chcę wstawić ten obiekt do tabeli mieszania z kluczem będącym acctName i chciałbym użyć wielomianów do zmniejszenia kolizji. Słyszałem, że muszę przesłonić hashCode() i równe metody. Uważam, że nadpisałem poprawnie, ale nie jestem pewien, czy jest poprawny, ponieważ wydaje się, że nie został wywołany. Czy ktoś może mi powiedzieć, czy robię to dobrze (przesłonięcie we właściwym miejscu i dodanie poprawnie) i wyjaśnić mi, jak wydrukować po dodaniu?
Dziękuję i czekam na wkład w rozwój społeczności w przyszłości!
Klasa ---> konta
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);
}
Klasa ----> Driver
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);
}
EDIT Z Getter INSIDE obiekt konta
public String testGetter()
{
return acctName.hashCode() + lastName.hashCode();
}
Ah sens, moim problemem jest to, że moje konto przedmiot trwa acctName i nazwisko w jednym obiekcie. Jak już powiedziałem, kluczem jest acctName. Więc co mógłbym użyć dla pola klucza podczas deklarowania hashtable, jeśli mam wszystko, czego potrzebuję w obiekcie mojego konta? – michael
Czy powinienem umieścić wszystko w obiekcie konta zamiast w sterowniku? Dzięki! – michael
dodaj metodę getter do klasy, która zwróci "" acctName.hashCode() + lastName.hashCode(); "". ANd następnie użyj zwróconej wartości jako klucza tablicy hashtable. –