Mi primer instinto es decir que cada clave es un objeto, y tiene un código hash, que es lo que se usa para determinar si se está insertando un duplicado. Sin embargo, no puedo encontrar nada para respaldar eso seguro. ¿Puede alguien proporcionar un enlace que diga eso, o proporcionar la respuesta real aquí? ¡Gracias!¿Qué usa Java para determinar si una clave es un duplicado en un Mapa?
Respuesta
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.
Utiliza el método() iguales en la tecla. El método hashCode() simplemente ayuda a almacenar eficientemente las claves para el mapa.
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.
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.
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.
- 1. Determinar si un archivo es un duplicado
- 2. ¿Cómo determinar si un personaje es una letra en Java?
- 3. ¿Clave para dos cadenas en un mapa?
- 4. ¿Qué es un buen algoritmo para determinar si una entrada es un cuadrado perfecto?
- 5. ¿Cómo determinar si una clave es una letra o número?
- 6. pygtk: determinar la clave es un modificador
- 7. En Java, ¿qué precauciones se deben tomar al usar un conjunto como clave en un mapa?
- 8. Cómo determinar si una excepción es de un tipo particular
- 9. ¿Cómo puedo determinar si una clave en particular es única en una multimapa?
- 10. Determinar si un valor es una función en Haskell
- 11. Cómo determinar si una cadena es un número en C#
- 12. ¿Qué es un buen icono para representar una leyenda o una clave para un diagrama?
- 13. ¿Cómo determinar si una vista es visible en un ListView?
- 14. ¿Puedo definir un mapa cuya clave es una estructura?
- 15. ¿Cómo puedo determinar si un archivo es un archivo PDF?
- 16. clave Java - mapa de teclas
- 17. Forma idiomática de comprobar si una clave en un mapa tiene un valor
- 18. determinar si una llave está presente en un diccionario
- 19. ¿Qué es más rápido y mejor determinar si existe una clave de matriz en PHP?
- 20. ¿Qué es una función vimrc para determinar si un buffer ha sido modificado?
- 21. Determinar si un valor es un número entero en Python
- 22. Eliminar una clave de un mapa C++
- 23. ¿Puedo tener un mapa de clave (en lugar de clave-valor) en Java?
- 24. ¿Cómo comprobar si una clave en un mapa comienza con un valor de cadena dada
- 25. ¿Qué usa Visual Studio para determinar si una compilación está actualizada?
- 26. ¿Cómo determinar si una ruta es un subdirectorio de otra?
- 27. ¿Cómo determinar si un tipo .NET es una estructura personalizada?
- 28. Cómo determinar rápidamente si un método se reemplaza en Java
- 29. ¿qué es exactamente una dimensión de mapa en un mapa multidimensional?
- 30. ¿Cómo determinar si un tipo es un tipo de colección?
Gracias por explicarlo mucho mejor que yo :) – kevindaub