Сравнение между Hashmap и Hashtable является общим вопросом в интервью Java, который используется для проверки того, могут ли программисты правильно использовать классы сбора и могут адаптироваться к различным идеям для решения проблем. Как работает HashMap, сравнение ArrayList с Vector, и этот вопрос - самый классический вопрос о фреймворках сбора Java. Hashtable - это устаревший класс коллекции, который существует в Java API в течение долгого времени. Он был переписан в Java 4 и внедрил интерфейс карты, поэтому с тех пор он стал частью фреймворта коллекции Java. Hashtable и Hashmap довольно легко задать в интервью Java, и даже стали самыми распространенными вопросами, которые можно проверить в интервью с рамками сбора, поэтому не забудьте подготовить этот вопрос, прежде чем участвовать в любых интервью на Java.
В этой статье мы увидим не только разницу между HashMap и Hashtable, но и сходством между ними.
Разница между HashMap и Hashtable
Как HashMap, так и хэштабные реализации интерфейсов карты, но перед тем, как решить, какой из них использовать, вы должны сначала выяснить разницу между ними. Основные различия: безопасность потока, синхронизация и скорость.
Некоторые важные термины следует отметить:
1) Сихронизированный означает, что только один поток может изменить хэш -сат одновременно. То есть любой поток должен сначала получить блокировку синхронизации, когда он хочет обновить хэштебу. Другие потоки должны ждать, пока блокировка синхронизации не будет выпущена, прежде чем они смогут получить блокировку синхронизации и снова обновить хэштату.
2) Отказобезопасные и итераторные итераторные итераторы связаны. Если объект сбора создает итератор или спископитор, а затем другие потоки пытаются изменить объект коллекции «структурно», будет брошено исключение CondurentModificationException. Но другие потоки могут изменить объект сбора с помощью метода set (), потому что это не изменяет коллекцию «структурно». Однако, если структура была изменена и метод set () называется исключение allodalargumentException.
3) Структурные изменения относятся к удалению или вставке элемента, который повлияет на структуру карты.
Можем ли мы сделать синхронизацию HashMap?
HashMap может быть синхронизирован с помощью следующего утверждения:
Карта m = collections.synchronizemap (hashmap);
в заключение
Существует несколько основных различий между хэштетом и хэшмапом: безопасность и скорость нити. Используйте хэштибл только тогда, когда вам нужна полная безопасность потока, и если вы используете Java 5 или выше, используйте conturrenthashmap.
Оригинальная ссылка: javarevisited Перевод: ImportNew.com - Tang Xiaojuan Ссылка на перевод: http://www.importnew.com/7010.html