Sobes.tech
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.