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.