Sobes.tech
Junior — Middle

Може ли като ключ в обект да се използва нестрингова стойност?

sobes.tech AI

Отговор от AI

В Java (и, по-специално, в Android) ключът в стандартните обекти като HashMap може да бъде обект от всяка класа, не непременно низ. Важното е този обект правилно да реализира методите equals() и hashCode(). Например, може да използвате Integer, Enum или собствени класове като ключове.

Пример:

Map<Integer, String> map = new HashMap<>();
map.put(1, "един");
map.put(2, "два");

String value = map.get(1); // "един"

Обаче, ако използвате обикновен обект без да препишете equals и hashCode, поведението може да бъде неочаквано, тъй като ключовете се сравняват по тези методи. За разлика от JavaScript, където ключовете на обекта винаги се преобразуват в низ, в Java ключовете в Map могат да бъдат всякакви обекти.