Sobes.tech
Junior — Middle

Môže sa ako kľúč v objekte použiť ne-riadková hodnota?

sobes.tech AI

Odpoveď od AI

V Jave (a, špeciálne v Android) môže byť kľúčom v štandardných objektoch typu HashMap akýkoľvek objekt akejkoľvek triedy, nie nevyhnutne reťazec. Dôležité je, aby tento objekt správne implementoval metódy equals() a hashCode(). Napríklad, môžu sa použiť Integer, Enum alebo vlastné triedy ako kľúče.

Príklad:

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

String hodnota = map.get(1); // "jeden"

Avšak, ak použijete obyčajný objekt bez prepísania equals a hashCode, správanie môže byť nepredvídateľné, pretože kľúče sa porovnávajú podľa týchto metód. Na rozdiel od JavaScriptu, kde sú kľúče objektu vždy prevedené na reťazec, v Jave môžu byť kľúče v Map akékoľvek objekty.