Modifica: ha spiegato il problema correttamente ora.Posso avere HashSet come chiave in una HashMap? Suggerisci un'alternativa se non
Ho una mappa di hash dove voglio memorizzare set di parole viste insieme (chiave) e le linee in cui sono state viste insieme (valore). Questa è la struttura mi si avvicinò con:
HashMap<HashSet<String>, HashSet<Integer>> hm= ...
per gli ingressi:
mango, banana, mela
mela, banana
pesca, Tricheco
tricheco, pesca
Mentre leggo, riga per riga, creo nuove chiavi temporanee (hashset non ancora inserite in hashmap) dalla combinazione di parole nella riga. Ogni chiave temporanea è un hashset di un sottoinsieme delle parole nella riga. Se una chiave temporanea esiste già nel mio hashmap, che posso controllare da
if(hashmap.containsKey(hashset))
ho semplicemente aggiungere la nuova linea di corrispondente valore di quella chiave, se non, io faccio una nuova voce nel hashmap e prendersi cura di esso.
In nessun punto si modifica una chiave esistente. Aggiorno solo i loro valori corrispondenti in hasmmap.
mia hashmap, al termine della lettura del file, dovrebbe essere simile a questo
[mela, banana] = [1,2]
[pesca, tricheco] = [3,4]
...
il problema è che il pezzo di codice
if(hashmap.containsKey(hashset))
non lo fa alw ays rileva chiavi esistenti. Perchè è questo? Questa struttura non è consentita?
Grazie
Hai provato fuori? – pcalcao
La riga 5 non dovrebbe essere mappata anche a 'peach, walrus'? E che dire del 'mango'? – Thomas
@pcalcao si. si comporta in modo strano a volte rileva l'esistenza del set, a volte no. Voglio solo verificare se HashMap è in grado di gestire hashset con una chiave. – student101