Sobes.tech
Junior — Middle

Használható-e nem sztring érték kulcsként egy objektumban?

sobes.tech MI

Válasz az MI-től

Java-ban (és különösen az Androidban) a HashMap típusú standard objektumokban a kulcs lehet bármilyen osztály példánya, nem feltétlenül sztring. A lényeg, hogy ez az objektum helyesen valósítsa meg az equals() és hashCode() metódusokat. Például használhatunk Integer-t, Enum-ot vagy saját osztályokat kulcsként.

Példa:

Map<Integer, String> map = new HashMap<>();
map.put(1, "egy");
map.put(2, "kettő");

String value = map.get(1); // "egy"

Azonban, ha egy normál objektumot használunk equals és hashCode felülírása nélkül, a viselkedés váratlan lehet, mivel a kulcsokat ezek szerint hasonlítják össze. Ellentétben a JavaScript-tel, ahol az objektum kulcsai mindig stringgé alakulnak, Java-ban a Map kulcsai lehetnek bármilyen objektumok.