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.