|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2006
Messaggi: 2516
|
[Java] LinkedList (contains)
Ragazzi vi giuro che sto impazzendo per una cosa che probabilmente è stupidissima. Ho una classe Iscritti che ha solo due campi nome e cognome di tipo string, e voglio fare una linkedlisk di Iscritti, per poter usare poi i metodi add e compare.
Ho ridefinito quindi le funzioni equals e hashCode della classe in questo modo Codice:
public boolean equals(Object o)
{
Iscritto b = (Iscritto)o;
return ((this.nome == b.nome) && (this.cognome == b.cognome));
}
public int hashCode()
{
return (this.nome.hashCode() + this.cognome.hashCode());
}
La cosa strana è che nella funzione che richiama contains stampo prima tutto il contenuto della lista (per semplicità l'ho riempita con un solo elemento) e poi l'elemento che sto cercando e coincidono, ma mi viene ritornato false!! Posto il codice: Codice:
public synchronized boolean checkIscrizione(Iscritto x)
{
Iscritto y = new Iscritto(x.nome.trim(), x.cognome.trim());
System.out.println("Presente in lista " + iscritti.get(0).nome + " " +iscritti.get(0).cognome) ;
boolean result = iscritti.contains(y);
System.out.println("Sto cercando " + x.nome + " " + x.cognome + " " + result);
return result;
}
Mi restituisce il seguente risultato: Codice:
Presente in lista C1 C1 Sto cercando C1 C1 false |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Il confronto tra stringhe lo dovresti effettuare con compareTo oppure equals, con == fai il confronto tra i valori dei riferimenti.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Io nella funzione equals(Object o) aggiungerei anche questa riga
Codice:
if(o.getClass() != Iscritto.class)return false; |
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: Mar 2006
Messaggi: 2516
|
Quote:
Vengo dal c++ e sono abituato a comparare le stringhe con ==, non avrei mai trovato l'errore Quote:
|
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:16.




















