J'ai un doute concernant HashMap, comme nous le savons tous, HashMap autorise une paire clé/valeur nulle. Ma question est la suivante.
Si j'ai écrit comme ça,
m.put(null,null);
m.put(null,a);
Lance-t-il une (erreur ou exception) ou va-t-il remplacer la valeur ou quelle sera la valeur de returing ??
Type Hashmap Remplace cette clé si la clé hashmap est identique.
map.put("1","1111");
map.put("1","2222");
sortie
key:value
1:2222
Chaque clé dans un HashMap doit être unique.
Lors de "l'ajout d'une clé dupliquée", l'ancienne valeur (pour la même clé, car les clés doivent être uniques) est simplement remplacée; voir HashMap.put :
Associe la valeur spécifiée à la clé spécifiée dans cette carte. Si la carte contenait précédemment un mappage pour la clé, l'ancienne valeur est remplacée.
Retourne la valeur précédente associée à la clé, ou null s'il n'y avait pas de mappage pour la clé.
En ce qui concerne les valeurs NULL: une seule valeur null key est autorisée (car les clés doivent être uniques), mais HashMap peut avoir un nombre quelconque de valeurs null values et une clé NULL n'a pas besoin de valeur NULL. Par la documentation :
[.. HashMap] autorise null values et [a] null key.
Cependant, la documentation indique que Nothing indique que null/null doit être une paire clé/valeur spécifique ou que null/"a" est invalide.
Exemple de code:
HashMap<Integer,String> h = new HashMap<Integer,String> ();
h.put(null,null);
h.put(null, "a");
System.out.println(h);
Sortie:
{null=a}
Ne permet pas les doublons dans le sens, Cela permet de vous ajouter mais cela ne sert à rien que cette clé ait déjà une valeur ou non. Donc, actuellement, pour une clé il n’y aura que une valeur
Il remplace en silence la clé value
pour null
. Pas exception.
Lorsque vous essayez d'obtenir, la dernière valeur insérée avec null
sera renvoyée.
Ce n'est pas seulement avec null
et pour n'importe quelle clé.
Avoir un exemple rapide
Map m = new HashMap<String, String>();
m.put("1", "a");
m.put("1", "b"); //no exception
System.out.println(m.get("1")); //b
HashMap n'autorise pas les clés en double, mais comme il n'est pas thread-safe, des clés peuvent être dupliquées
while (true) {
final HashMap<Object, Object> map = new HashMap<Object, Object>(2);
map.put("runTimeType", 1);
map.put("title", 2);
map.put("params", 3);
final AtomicInteger invokeCounter = new AtomicInteger();
for (int i = 0; i < 100; i++) {
new Thread(new Runnable() {
@Override
public void run() {
map.put("formType", invokeCounter.incrementAndGet());
}
}).start();
}
while (invokeCounter.intValue() != 100) {
Thread.sleep(10);
}
if (map.size() > 4) {
// this means you insert two or more formType key to the map
System.out.println( JSONObject.fromObject(map));
}
}
m.put(null,null); // here key =null
m.put(null,a);/here also key=null
Les clés en double ne sont pas autorisées dans hashmap.
Cependant, la valeur peut être dupliquée.