Sobes.tech
Junior — Middle

¿Se puede usar un valor que no sea una cadena como clave en un objeto?

sobes.tech AI

Respuesta de la IA

En Java (y, en particular, en Android), la clave en los objetos estándar como HashMap puede ser cualquier objeto de cualquier clase, no necesariamente una cadena. Lo importante es que este objeto implemente correctamente los métodos equals() y hashCode(). Por ejemplo, se pueden usar Integer, Enum o clases propias como claves.

Ejemplo:

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

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

Sin embargo, si se usa un objeto normal sin sobrescribir equals y hashCode, el comportamiento puede ser inesperado, ya que las claves se comparan mediante estos métodos. A diferencia de JavaScript, donde las claves del objeto siempre se convierten en cadenas, en Java las claves en un Map pueden ser cualquier objeto.