Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435

    Una buona tabella hash...

    Ciao, ho bisogno di una classe java che rappresenti una tabella di hash...ho visto HashMap ma non va bene perché presuppone che a ogni chiave sia associato uno e un solo valore, io invece devo prevedere anche casi in cui una hash mi restituisca più di un valore...ma non lo posso decidere a tempo di compilazione!
    Ad esempio ho un file .txt che può cambiare a seconda del giorno, cmq il file è organizzato in righe di
    xxx, yyy

    dove le x sono la chiave e le y il contenuto. Ora, un giorno possono esserci chiavi sempre diverse, altre chiavi uguali, ma io cmq devo inserire tutto in una tabella hash..idee?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ma scusa, una HashMap<String, ArrayList<String>> non ti va bene?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Il punto è che l'ordine in cui compaiono le chiavi nel file, che leggerò riga per riga, non è ordinato (scusa il gioco di parole :P)
    Cioè posso trovarmi anche una situazione così:
    xxx, abf
    xyx, afs
    xxx, sfs

    Quindi non posso creare a priori un'array list, metterci dentro i dati che voglio, e infine inserire il tutto a quella posizione dell'hash, dovrei fare tipo
    put("xxx",abf)
    put("xxx",sfs)

    e l'hash, vedendo la stessa chiave, dovrebbe automaticamente accodare sfs dopo abf nella riga xxx.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    forse non ti è chiaro come funziona hashmap

    1. non importa l'ordine delle righe (hashmap non lo mantiene)
    2. cambia logica, usa la struttura che ti ha fatto vedere alex e poi fai un controllo quando le inserisci

    codice:
    if (map.containsKey(chiave)) {
      templist = map.get(chiave); 
    }else{
    templist = new ArrayList();
    }
      templist.add(valore);
      map.put(chiave, templist);
    è solo un abbozzo, ma dovrebbe funzionar

  5. #5
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    E forse a te non è chiaro quello che ho scritto: il fatto delle righe riguarda il mio file di testo e la logica con cui il programma lo esamina, chi ha nominato l'hash map in tutto questo?
    Buono però il workaround del punto 2 cmq, userò questa tecnica grazie mille ^^

  6. #6
    Domanda (che c'entra fino ad un certo punto).

    Ma in generale è migliore l'HashMap o l'Hashtable?

    Perché io uso le Hashtable dato che sono thread safe, però il fatto che le Hashtable ci siano da java 1 mentre le HashMap siano state introdotte con java2, mi fa venire dei dubbi...

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da canemacchina
    Domanda (che c'entra fino ad un certo punto).

    Ma in generale è migliore l'HashMap o l'Hashtable?

    Perché io uso le Hashtable dato che sono thread safe, però il fatto che le Hashtable ci siano da java 1 mentre le HashMap siano state introdotte con java2, mi fa venire dei dubbi...
    Se vuoi una mappa thread-safe dovresti usare ConcurrentHashMap, Hashtable se non è deprecato poco ci manca...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Ottimo, su questa cosa ero rimasto un po' indietro allora, non conoscevo la ConcurrentHashMap.
    Grazie davvero, ciao!

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.