web-dev-qa-db-fra.com

Est-ce que "put" écrase les valeurs existantes?

Nouveau sur les hashtables avec une question simple. Pour une raison quelconque, googler ne m’a pas apporté une réponse directe. Dis que j'ai un <int,String> hashtable mis en place:

myHashtable.put(1,"bird");
myHashtable.put(2,"iguana");

et je veux changer "oiseau" en "poisson" (et laisser l'index identique). Puis-je simplement faire un simple put, ou dois-je supprimer l'entrée ou quoi d'autre?

67
Ben

Oui.

Si un mappage vers la clé spécifiée existe déjà, l'ancienne valeur sera remplacée (et renvoyée). Voir Hashtable.put() .

Pour un environnement multi-thread, je recommanderais ConcurrentHashMap ou une autre implémentation ConcurrentMap. Bien que Hashtable soit synchronisé, il existe maintenant des implémentations plus sophistiquées disponibles pour le mappage simultané, telles que celles de Guava MapMaker et CacheBuilder =.

Gardez également à l’esprit que Map aura les paramètres de type <Integer, String> puisque les paramètres de type primitif ne sont pas supportés.

80
Paul Bellora

hmmm, juste besoin d'ajouter une ligne
myHashtable.put(1,"fish");
pour voir ce qui est incroyable se passe

voir ces liens: http://docs.Oracle.com/javase/6/docs/api/Java/util/Hashtable.html#put (K, V)

Returns:
the previous value of the specified key in this hashtable, or null if it did not have one
4
JessonChan