Sobes.tech
Junior — Middle

Poate fi utilizată o valoare care nu este șir ca și cheie într-un obiect?

sobes.tech AI

Răspuns de la AI

În Java (și, în special, în Android), cheia în obiectele standard precum HashMap poate fi un obiect din orice clasă, nu neapărat un șir de caractere. Important este ca acest obiect să implementeze corect metodele equals() și hashCode(). De exemplu, se pot folosi Integer, Enum sau propriile clase ca chei.

Exemplu:

Map<Integer, String> map = new HashMap<>();
map.put(1, "unu");
map.put(2, "doi");

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

Totuși, dacă se folosește un obiect obișnuit fără a suprascrie equals și hashCode, comportamentul poate fi neașteptat, deoarece cheile sunt comparate după aceste metode. Spre deosebire de JavaScript, unde cheile obiectului sunt întotdeauna convertite în șir, în Java cheile dintr-un Map pot fi orice obiect.