Замена для устаревшего класса Hashtable в Java

Когда я попытался использовать класс хэш-таблицы, Netbeans дал мне ошибку:

Пока они поддерживаются, эти классы были устаревшими классами коллекции JDK1.2 и, вероятно, не должны использоваться в новой разработке.

Однако я не могу найти пример онлайн, чтобы лучше заменить Hashtable. Любые предложения?

Ответы

Ответ 1

Самая прямая замена Hashtable - HashMap.

В отличие от того, что может быть важно, все релевантные методы Hashtable синхронизируются, пока они не синхронизируются на HashMap.

Ответ 2

Лучшая замена Hashtable HashMap.

Что касается устаревания, я не имею к этому ссылки, но Javadoc утверждает:

Начиная с платформы Java 2 v1.2, этот класс был доработан до реализуйте интерфейс Map, сделав его членом Структура коллекций Java.

Hashtable синхронизируется в отличие от HashMap.

Ответ 3

Вы должны использовать HashMap, но он не предназначен для параллельных сред, где вы можете использовать ConcurrentHashMap.

ИЛИ

Map<K,V> myMap = Collections.synchronizedMap(/*any map instance*/);

Ответ 4

Возможно, вы можете использовать Hashmap:

Map<String, Integer> mymap = new HashMap<String, Integer>();

Ответ 5

Есть случаи, когда для метода вне вашего контроля требуется Hashtable. Java javax.management.ObjectName является такой пример [1].

Если требуется внешний интерфейс, вам нужно использовать Hashtable. В netbeans вы можете использовать:

@SupresssWarnings("UseOfObsoleteCollectionType")

для локального предупреждения.

См

1: Интересно, почему они использовали Hashtable, а не HashMap, так как ObjectName доступный с 1,5 и Hashtable устарел, поскольку 1.2

Ответ 6

  • Для обычного (то есть неавтоматического доступа) - используйте HashMap (обычно через интерфейс карты).
  • Если вам нужна простая оболочка синхронизации для существующего Map - use Collections.synchronizedMap(...)
  • Если вам нужен класс тщательно и оптимально разработан для одновременного доступа - используйте ConcurrentHashMap (обычно через интерфейс ConcurrentMap, который расширяет интерфейс карты с дополнительными функциями concurrency).