Sobes.tech
Junior — Middle

Jaké důsledky mohou nastat při použití měnitelných klíčů v datových kolekcích?

sobes.tech AI

Odpověď od AI

Použití měnitelných (mutable) klíčů v datových kolekcích, jako jsou HashMap nebo HashSet v Javě, může vést k vážným problémům. Hlavním důvodem je, že klíče by měly být neměnné, aby hash kód a rovnost zůstaly konstantní.

Pokud se klíč po vložení do kolekce změní, pak:

  • Hash kód klíče se může změnit a kolekce nenajde prvek podle tohoto klíče.
  • To povede ke "ztrátě" prvku: zůstane ve struktuře, ale nebude přístupný.
  • Bude narušena integrita dat a správná funkčnost kolekce.

Příklad:

Map<List<String>, String> map = new HashMap<>();
List<String> key = new ArrayList<>();
key.add("initial");
map.put(key, "value");

// Změna klíče po přidání
key.add("changed");

// Pokus o získání hodnoty podle klíče nebude fungovat
String val = map.get(key); // null

Doporučuje se používat neměnitelné objekty jako klíče, například řetězce, čísla nebo speciálně vytvořené neměnitelné třídy.