2008-12-13 8 views

Respuesta

17

La interfaz Map especifica que si dos claves son null son duplicados, de lo contrario si hay una llave k tal que key.equals(k), entonces no es un duplicado. Véase la contiene o si Metodo aquí:

http://java.sun.com/javase/6/docs/api/java/util/Map.html#containsKey(java.lang.Object)

Sin embargo, le toca a la aplicación Map cómo hacer para realizar el registro de entrada, y una HashMap se utilice un código hash para acotar las claves potenciales se comprobará con el método equals. Así, en la práctica, de un mapa basado picadillo típica, para comprobar si hay duplicados un mapa tomará el código hash (probablemente mod cierto tamaño), y el uso de equals el que comparar cualquier clave cuyo código hash mod del mismo tamaño da el mismo resto.

+0

Gracias por explicarlo mucho mejor que yo :) – kevindaub

0

Utiliza el método() iguales en la tecla. El método hashCode() simplemente ayuda a almacenar eficientemente las claves para el mapa.

3

Leer la pregunta equivocada, pero la respuesta de la persona anterior es correcta y mi enlace proporciona la respuesta en cuanto a la forma en que se determina (el método equals). Mire los métodos contains y get en el enlace.

Cómo un mapa inserciones: No puede haber una clave duplicada en un mapa. Reemplazará el valor anterior con el nuevo valor si encuentra una clave duplicada. Aquí hay un link en la interfaz del mapa. Además, si observa el método put (clave K, valor V), también explica cómo funciona un mapa. Espero que ayude.

1

Asumo que te refieres a java.util.Map, que es una interfaz proporcionada en las bibliotecas estándar de Java. El método para determinar si una clave es duplicada se deja a la implementación específica. A java.util.HashMap usa equals y hashCode, por ejemplo. Puede escribir su propia implementación de Map que use algo totalmente diferente.

0

cuidadosa en un caso ventaja aquí. Las claves nulas no son siempre duplicadas. De hecho, las claves nulas resultan ser una gran frustración entre las implementaciones de Map (ver mi publicación en Consistency).

Por ejemplo, las claves nulas son correctas en HashMaps, pero no en una TreeMap que utiliza ordenamiento natural, o en ConccurentHashMap donde las claves nulas están prohibidas. El problema aquí es que lanzan excepciones no detectadas en muchos de sus métodos si utiliza una clave nula y eso introduce bichos en tiempo de ejecución cuando cambia de implementación durante la refactorización.

Cuestiones relacionadas