Voglio memorizzare un valore basato su un tasto, composto da un insieme di elementi. Qualcosa come l'esempio qui sotto. Naturalmente so che il mio pseudo-esempio non funzionerebbe, poichè l'hash dell'oggetto sarà probabilmente il suo indirizzo che sarà unico per ogni nuova istanza, indipendentemente dal suo contenuto.Come utilizzare set di elementi come chiave nelle mappe java?
// in this pseudo-example this is my SET http://algs4.cs.princeton.edu/35applications/SET.java.html
// but the idea is that values are unique
HashMap<SET<Integer>, String> map = new HashMap<>();
SET a = new SET();
a.add(1);
a.add(2);
a.add(5);
SET b = new SET();
b.add(5);
b.add(1);
b.add(2);
map.put(a, "w00t");
System.out.println(map.get(b)); // I would want to get "w00t" because my key is the same set of elements
Certo che posso solo ordinare e concatenare i valori impostati come una stringa, con un separatore e l'uso che in una struttura HashMap<String, String>
ma che semplicemente non si sente bene. Sono abbastanza nuovo alla programmazione Java quindi potrebbe esserci una soluzione ovvia che mi manca.
Devi cercare in 'keySet()'. Inoltre è un 'Set' e non' SET' –
Penso che ci sia un grosso problema qui se si desidera utilizzare le raccolte per questo lavoro. Sono tutti mutabili. Cosa succede se aggiungi set (2,3) e (1,2,3), ma poi decidi di rimuovere un {1} dal secondo set? Meglio creare un oggetto immutabile separato per questo, altrimenti sarà preoccupante. – pnadczuk
Mi rendo conto di questo, ma nel mio caso non modificherò gli oggetti una volta memorizzati. Idealmente mi piacerebbe avere un oggetto immutabile che inizializzo da altro iterabile, ma non ce n'è uno che riesco a trovare :( – ddinchev