Перезаписывает ли "существующие" значения?
Новое в hashtables с простым вопросом. По какой-то причине googling не дал мне прямой ответ. Скажем, у меня установлена хэш-таблица <int,String>
:
myHashtable.put(1,"bird");
myHashtable.put(2,"iguana");
и я хочу изменить "птицу" на "рыбу" (и оставить индекс тем же). Могу ли я просто сделать простой put
, или мне нужно удалить запись или что?
Ответы
Ответ 1
Да.
Если сопоставление с указанным ключом уже существует, старое значение будет заменено (и возвращено). См. Hashtable.put()
.
Для многопоточной среды я бы рекомендовал ConcurrentHashMap
или другую реализацию ConcurrentMap
. Хотя синхронизация Hashtable
, для параллельного сопоставления доступны более сложные реализации, такие как Guava MapMaker
и CacheBuilder
.
Также имейте в виду, что Map
будет иметь параметры типа <Integer, String>
, поскольку параметры примитивного типа не поддерживаются.
Ответ 2
hmmm, просто нужно добавить строку
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