Junior — Middle
Kas võib olla võtmena objektis, kui see ei ole string?
sobes.tech AI
Vastus AI-lt
Java (ja, eriti Androidis) standardsetes objektides nagu HashMap võib võti olla mis tahes klassi objekt, mitte tingimata string. Oluline on, et see objekt õigesti rakendaks equals() ja hashCode() meetodeid. Näiteks võib kasutada Integer, Enum või oma klasse võtmetena.
Näide:
Map<Integer, String> map = new HashMap<>();
map.put(1, "üks");
map.put(2, "kaks");
String value = map.get(1); // "üks"
Kuid, kui kasutate tavalist objekti ilma equals ja hashCode ülekirjutamiseta, võib käitumine olla ettearvamatu, kuna võtmeid võrreldakse nende meetodite järgi. Erinevalt JavaScriptist, kus objekti võtmed muudetakse alati stringiks, võivad Java Mapis võtmed olla mis tahes objektid.