Sobes.tech
Junior — Middle

Pode-se usar um valor que não seja uma string como chave num objeto?

sobes.tech IA

Resposta da IA

Em Java (e, em particular, no Android), a chave em objetos padrão como HashMap pode ser qualquer objeto de qualquer classe, não necessariamente uma string. O importante é que esse objeto implemente corretamente os métodos equals() e hashCode(). Por exemplo, pode-se usar Integer, Enum ou classes próprias como chaves.

Exemplo:

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

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

No entanto, se usar um objeto comum sem sobrescrever equals e hashCode, o comportamento pode ser inesperado, pois as chaves são comparadas por esses métodos. Ao contrário do JavaScript, onde as chaves do objeto sempre se convertem para string, em Java as chaves em um Map podem ser qualquer objeto.