Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    [Java] HashMap - Non recupero il valore inserito

    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:
    codice:
    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.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    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

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Mi hai salvato la vita!
    E io che credevo che il test lo effettuasse utilizzando equals()...


    Grazie mille!

    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    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.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.