Преимущества HashTable - PullRequest
       0

Преимущества HashTable

5 голосов
/ 16 января 2012

В чем главное преимущество использования Hashtable по сравнению с HashMap. Потому что Hashtable главное преимущество - это синхронизация. Теперь карта также может быть синхронизирована с помощью synchronizedMap().

Map m = Collections.synchronizedMap(hashMap);

Ответы [ 2 ]

3 голосов
/ 16 января 2012

Hashtable существовал до каркаса коллекций, поэтому он сохраняется в основном для обратной совместимости. Вместо этого используйте ConcurrentHashMap.

Обратите внимание, что есть небольшая семантическая разница - Hashtable не допускает нулевые значения, а HashMap допускает нулевые значения и нулевой ключ.

2 голосов
/ 16 января 2012

HashTable давно устарела.Основное отличие состоит в том, что HashTable синхронизируется внутри, а HashMap - нет.Это, однако, рассматривается как недостаток, поскольку использование HashTable в одном потоке влечет за собой штрафы за блокировку и разблокировку, когда в этом нет необходимости.

Кроме того, еще один момент, который делает синхронизацию HashTable ненастолько полезным является тот факт, что выполнение двух поточно-ориентированных операций в последовательности не гарантирует атомарность всей последовательности, подумайте, например, о:

if(key does not exist)
    add key

, в то время как тестирование существования и добавление являются поточно-безопасными,вышеуказанной конструкции нет, потому что другой поток может прервать его посередине.Следовательно, внешняя синхронизация необходима в любом случае.

Поэтому я не вижу смысла использовать HashTable во все эти дни ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...