Junior — Middle
Milyen következményekkel járhat az módosítható kulcsok használata az adatgyűjteményekben?
sobes.tech MI
Válasz az MI-től
A változtatható (mutable) kulcsok használata adatgyűjteményekben, például HashMap vagy HashSet Java-ban, súlyos problémákhoz vezethet. A fő ok az, hogy a kulcsoknak változatlannak kell lenniük, hogy a hash-kód és az egyenlőség állandó maradjon.
Ha a kulcs a gyűjteménybe helyezés után változik:
- A kulcs hash-kódja megváltozhat, és a gyűjtemény nem találja meg az elemet ezen a kulcson keresztül.
- Ez az elem "elvesztéséhez" vezet: a struktúrában marad, de nem lesz elérhető.
- Az adatok integritása és a gyűjtemény helyes működése sérül.
Példa:
Map<List<String>, String> map = new HashMap<>();
List<String> key = new ArrayList<>();
key.add("initial");
map.put(key, "value");
// A kulcs módosítása az hozzáadás után
key.add("changed");
// Az érték lekérdezése a kulcs alapján nem fog működni
String val = map.get(key); // null
Ezért ajánlott olyan objektumokat használni kulcsként, amelyek nem változnak meg, például sztringeket, számokat vagy kifejezetten nem változó osztályokat.