Коллекция Java: Есть ли конкретный класс HashSet, который использует Hash-таблицу, реализованную с использованием LinkedList в качестве своей структуры данных? - PullRequest
0 голосов
/ 17 сентября 2011

В книге «Руководство программиста по сертификации Java SCJP Халида Мугхала - 3-е изд.» На странице 782 я заметил, что в нем говорится, что конкретный класс HashSet реализован с использованием хэш-таблицы и связанного списка.Когда я просматриваю основной учебный веб-сайт Java http://download.oracle.com/javase/tutorial/collections/implementations/index.html,, кажется, что это не так.Пожалуйста посоветуй.Спасибо.

Ответы [ 2 ]

5 голосов
/ 17 сентября 2011

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

LinkedHashSet также имеет собственный связанный список, но не использует класс LinkedList.

0 голосов
/ 28 января 2014

Согласно коду HashSet,

public HashSet() {
    map = new HashMap<>();
}

Реализация интерфейса карты на основе хэш-таблицы.Эта реализация предоставляет все необязательные операции с картами и допускает нулевые значения и нулевой ключ.(Класс HashMap примерно эквивалентен классу Hashtable, за исключением того, что он не синхронизирован и допускает нулевые значения.) Этот класс не дает никаких гарантий относительно порядка отображения, в частности он не гарантирует, что порядок будет оставаться постоянным во времени.1004 *

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