Sobes.tech
Junior — Middle

Czy można użyć wartości nie będącej łańcuchem jako klucza w obiekcie?

sobes.tech AI

Odpowiedź od AI

W Javie (i, w szczególności, w Androidzie) kluczem w standardowych obiektach typu HashMap może być obiekt dowolnej klasy, niekoniecznie łańcuch znaków. Ważne jest, aby ten obiekt poprawnie implementował metody equals() i hashCode(). Na przykład można używać Integer, Enum lub własnych klas jako kluczy.

Przykład:

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

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

Jednakże, jeśli użyje się zwykłego obiektu bez nadpisania equals i hashCode, zachowanie może być nieprzewidywalne, ponieważ klucze są porównywane według tych metod. W odróżnieniu od JavaScript, gdzie klucze obiektu zawsze są konwertowane na łańcuch, w Javie klucze w Map mogą być dowolnymi obiektami.