«Положить» перезаписать существующие значения? - PullRequest
64 голосов
/ 27 августа 2011

Новое в хеш-таблицах с простым вопросом.По какой-то причине поиск в Google не дал мне прямого ответа.Скажем, у меня есть настроенная хеш-таблица <int,String>:

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

, и я хочу изменить "птицу" на "рыбу" (и оставить индекс таким же).Могу я просто сделать простой put, или мне нужно удалить запись, или как?

Ответы [ 2 ]

77 голосов
/ 27 августа 2011

Да.

Если сопоставление с указанным ключом уже существует, старое значение будет заменено (и возвращено). См Hashtable.put().

Для многопоточной среды, я бы порекомендовал ConcurrentHashMap или другую реализацию ConcurrentMap. Хотя Hashtable синхронизирован, в настоящее время доступны более сложные реализации для одновременного отображения, такие как MapMaker и CacheBuilder.

в Guava.

Также имейте в виду, что Map будет иметь параметры типа <Integer, String>, так как параметры примитивного типа не поддерживаются.

4 голосов
/ 28 апреля 2013

ммм, просто нужно добавить строку
myHashtable.put(1,"fish");
, чтобы увидеть, что происходит удивительно

см. Ссылки: 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
...