Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Hashtable: recupero dato

    Ciao a tutti sto impazzendo e sbattendo la testa su una Hashtable.
    Questa Hashtable ha come Chiave un oggetto chiamato EvolutionJourney con l'id numerico di una squadra e la partita giocata, e come Valore un Integer che ritorna la giornata
    (giocata e giornata possono essere differenti ad esempio quando una giornata di campionato viene posticipata ad una data futura)

    Solo che quando vado a fare la get il valore Integer "gg" è sempre null e non riesco a capire il perché

    qui di seguito il pezzo di codice incriminato:
    codice:
    EvolutionJourney ej=new EvolutionJourney(idsquadra, giocata);
    Integer gg=tableG.get(ej);
    non è un problema di cast perché ho già fatto la prova ed il risultato è lo stesso.

    Poi ho provato a scorrere il mio Hashtable e invece ciclando tra "tutti" i valori memorizzati (al momento 240) riesco a ritrovare correttamente il valore della giornata (il mio gg) con idsquadra e giocata pari al valore precedente.
    codice:
            
    Set<EvolutionJourney> keys = tableG.keySet();
    // Ciclando sul set di chiavi, recupero tutti i dati
    for(EvolutionJourney key1 : keys) {
         System.out.println(key1.getIdSquadra()+","+key1.getGiocata() + ": " + tableG.get(key1));
    }
    Non riesco a capire questa differenza...sto impazzendo per una cosa che dovrebbe essere banale.
    Uso java 1.6
    Grazie a tutti.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da schumy2000 Visualizza il messaggio
    Questa Hashtable ha come Chiave un oggetto chiamato EvolutionJourney
    EvolutionJourney implementa correttamente/appropriatamente equals/hashCode? È questo che serve per le chiavi nelle map basate su hash-table!

    Inoltre essendo usato come chiave, EvolutionJourney sarebbe meglio che fosse o completamente "immutabile" o perlomeno siano immutabili i campi che rappresentano la "univocità" dell'oggetto per la chiave.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie andbin,
    devo implementarle entrambi o una dei due?
    non ho usato molto Hashtable e quando l'ho usato erano sempre dati primitivi.

    Grazie.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da schumy2000 Visualizza il messaggio
    devo implementarle entrambi o una dei due?
    Entrambi. Se implementi solo uno dei due, rischi (quasi sicuramente) che si "rompa" il contratto che ci deve essere tra equals e hashCode.

    Quote Originariamente inviata da schumy2000 Visualizza il messaggio
    non ho usato molto Hashtable e quando l'ho usato erano sempre dati primitivi.
    Più che primitivi ... al massimo avevi oggetti dei wrapper Integer, ecc.... come chiavi e per queste classi equals/hashCode è già ok e appropriato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Grazie andbin per i tuoi preziosi consigli.
    Adesso funziona tutto

    Grazie ancora.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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 © 2025 vBulletin Solutions, Inc. All rights reserved.