Junior — Middle
Koje posledice mogu nastati pri korišćenju promenljivih ključeva u kolekcijama podataka?
sobes.tech АИ
Одговор од АИ
Korišćenje promenljivih (mutable) ključeva u kolekcijama podataka, kao što su HashMap ili HashSet u Javi, može dovesti do ozbiljnih problema. Glavni razlog je što ključevi moraju biti nepromenljivi da bi hash kod i jednakost ostali konstantni.
Ako se ključ promeni nakon što je dodat u kolekciju, tada:
- Hash kod ključa može da se promeni, i kolekcija neće moći da pronađe element putem tog ključa.
- To će dovesti do "gubitka" elementa: on će ostati u strukturi, ali mu pristup neće biti moguć.
- Narušava se integritet podataka i ispravno funkcionisanje kolekcije.
Primer:
Map<List<String>, String> map = new HashMap<>();
List<String> key = new ArrayList<>();
key.add("initial");
map.put(key, "value");
// Menjanje ključa nakon dodavanja
key.add("changed");
// Pokušaj dobijanja vrednosti putem ključa neće uspeti
String val = map.get(key); // null
Zato se preporučuje korišćenje nepromenljivih objekata kao ključeva, na primer, nizova, brojeva ili posebno kreiranih nepromenljivih klasa.