PDA

Visualizza la versione completa : [JAVA] HashMap: non recupero il valore inserito


LeleFT
11-01-2006, 17:55
Salve ragazzi.
Sto riscontrando un problema con le HashMap.
Voglio associare ad un oggetto della classe Prop (una mia classe, banalissima) un secondo oggetto della stessa classe. Il primo lo utilizzo come chiave (dato il suo "contenuto" Ŕ fisso), mentre l'altro lo utilizzo come valore.

Questo Ŕ il codice che utilizzo:


import java.util.HashMap;

public class Test {
public static void main(String [] args) {
HashMap hp = new HashMap();
hp.put(new Prop("Chiave"), new Prop("Valore"));
System.out.println( hp.get(new Prop("Chiave")) );
}
}

La semplicissima classe sopra riportata mi stampa "null"... :master:
Qualcuno mi sa spiegare perchŔ?

Aggiungo un paio di informazioni: la classe Prop Ŕ Serializable ed effettua l'override del metodo equals() per testare se due oggetti sono uguali (ovvero, se contengono lo steso valore stringa).


Grazie a chiunque mi darÓ utili informazioni per risolvere il problema.


Ciao. :ciauz:

floyd
11-01-2006, 17:59
le tabelle hash associano un numero, sicuramente un tipo di dato primitivo, alla chiave degli oggetti
credo che devi sovrascrivere hashCode
public int hashCode() {
return vedi tu;
}
ma non se sono sicuro :stordita:

LeleFT
11-01-2006, 18:05
Mi hai salvato la vita! :)
E io che credevo che il test lo effettuasse utilizzando equals()...


Grazie mille!

Ciao. :ciauz:

alka
11-01-2006, 19:54
Lo stesso discorso vale per .NET: quando due istanze di una classe contengono lo stesso valore, il codice che ridefinisce Equals e GetHashCode dovrebbe essere tale per cui il primo metodo restituisce True e il secondo lo stesso valore per entrambi gli elementi. :)

Loading