Sobes.tech
Junior — Middle

Lze jako klíč v objektu použít hodnotu, která není řetězec?

sobes.tech AI

Odpověď od AI

V Javě (a, zejména v Androidu) může být klíčem v standardních objektech typu HashMap jakýkoli objekt jakéhokoli třídy, nikoli nutně řetězec. Důležité je, aby tento objekt správně implementoval metody equals() a hashCode(). Například lze použít Integer, Enum nebo vlastní třídy jako klíče.

Příklad:

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

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

Nicméně, pokud použijete obyčejný objekt bez přepsání equals a hashCode, může být chování nepředvídatelné, protože klíče jsou porovnávány podle těchto metod. Na rozdíl od JavaScriptu, kde jsou klíče objektu vždy převedeny na řetězec, v Javě mohou být klíče v Map jakýkoli objekt.