autorización, aquí es la parte que no entiendo.
Si intenta recuperar un objeto utilizando el método get()
y se devuelve nulo, aún es posible que null
se almacene como el objeto asociado con la clave que suministró al método get()
. Puede determinar si este es el caso pasando su clave del objeto al método containsKey()
para el mapa. Esto devuelve true
si la clave se almacena en el mapa
Entonces, ¿cómo se supone containsKey()
decirme si el valor asociado con la llave suministrada es null
?
Esto es the reference si quiere verificar. Página 553La comprensión HashMap <K,V>
Respuesta
consideran este sencillo fragmento de código:
Map<String, String> m = new HashMap<String, String>();
m.put("key1", "value1");
m.put("key2", null);
System.out.println("m.get(\"key1\")=" + m.get("key1"));
System.out.println("m.containsKey(\"key1\")=" + m.containsKey("key1"));
System.out.println("m.get(\"key2\")=" + m.get("key2"));
System.out.println("m.containsKey(\"key2\")=" + m.containsKey("key2"));
System.out.println("m.get(\"key3\")=" + m.get("key3"));
System.out.println("m.containsKey(\"key3\")=" + m.containsKey("key3"));
Como se puede ver que puse en el mapa dos valores, uno de los cuales es nula. Thene le pregunté al mapa por tres valores: dos de ellos están presentes (uno es nulo) y el otro no. Mire el resultado:
m.get("key1")=value1
m.containsKey("key1")=true
m.get("key2")=null
m.containsKey("key2")=true
m.get("key3")=null
m.containsKey("key3")=false
La segunda y la tercera son la parte difícil. key2
está presente con valor nulo por lo que, usando get()
no se puede discriminar si el elemento no está en el mapa, o está en el mapa con un valor null
. Pero, usando containsKey()
puede, ya que devuelve un boolean
.
Map<String, Object> map = new HashMap<String, Object>();
map.put("Foo", null);
System.out.println(map.containsKey("Foo"));
System.out.println(map.containsKey("Boo"));
SALIDA:
true
false
get()
vuelve null
en dos casos:
- La clave no existe en el mapa.
- La clave existe, pero el valor asociado es
null
.
No se puede decir en get()
que es verdadero. Sin embargo, containsKey()
le dirá si la clave estaba presente en el mapa, independientemente de si su valor asociado era null
.
1 - editado para la clarificación –
que es más o menos lo que dije en el post anterior. – FSP
sí, lo que dice el libro es que se supone que me ayude a comprobar si el valor V de la HashMap
containsKey diría que si la clave está en el HashMap en absoluto. Considere el caso donde una clave está presente con valor nulo y el otro caso en el que la clave que está buscando no está en absoluto en el hashmap.
+1 respuesta correcta. –
(get() == null && containsKey()) == value is null
- 1. Volcar Java HashMap <K,V> a XML y
- 2. Scala "<-" para comprensión
- 3. Tipos predeterminados de HashMap para K y V
- 4. comprensión y solución de K-Way se fusionan tipo
- 5. System.Comparison <T> comprensión
- 6. C#: ¿Cómo puede Dictionary <K,V> implementar ICollection <KeyValuePair <K,V>> sin tener Add (KeyValuePair <K,V>)?
- 7. Empty ILookup <K, T>
- 8. ¿Qué es LinkedHashMap <k, v>?
- 9. Uso <c:forEach> con HashMap
- 10. Comprensión <input type = "file">
- 11. Java Map <K,V>: ¿Por qué get (object) not get (K)?
- 12. bulldozer Mapeo HashMap <Key,Value> a la lista <Value>
- 13. MySQL explicar Comprensión de la comprensión
- 14. Algoritmo QuickSelect Comprensión
- 15. Binary Search on Keys of SortedList <K, V>
- 16. Aplanar IEnumerable <IEnumerable <>>; la comprensión de los genéricos
- 17. errores extensión de tipo de diccionario <'K, 'V>
- 18. Convertir un POJO a un mapa <K,V>
- 19. Diccionario más eficiente <K,V> .ToString() con formato?
- 20. java HashMap clasificación <String, Entero>. ¿Cómo ordenarlo?
- 21. Asignación de Hashmap a Hashmap
- 22. java: HashMap <String, int> no funciona
- 23. Cómo crear un tipo que implementan IDictionary <'K, 'V> y IEnumerable <'V>
- 24. Algoritmo para la k-Fibonacci
- 25. Comprensión de la virtualización
- 26. Cómo iterar el Arraylist <HashMap <String, String >>?
- 27. Cómo obtener el valor almacenado en ArrayList <HashMap <key,value>>?
- 28. comportamiento fallido de java HashMap
- 29. Java - Ampliación HashMap - Objeto vs comportamiento genéricos
- 30. Cómo utilizar la identidad de un objeto como clave para el Diccionario <K,V>
Muy bien, eso lo explicó correctamente. En la programación de la vida real, tendré que usar 'containsKey()' primero para verificar si la clave es válida y luego mostrar el valor asociado a ella.Si no, muestre un mensaje o envíe una excepción :) –
@FasihKhatib que solo es realmente necesario si está almacenando 'null's en el Mapa. Si nunca almacena 'null' en el Mapa, no tiene mucho sentido verificar las asignaciones nulas válidas. –