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.