Различие между HashSet и HashMap?

Кроме факта это HashSet не позволяет дублирующиеся значения, между чем различие HashMap и HashSet?

Я имею в виду мудрую реализацию? Это немного неопределенно потому что обе хеш-таблицы использования для хранения значений.

160
задан S.K. 3 November 2018 в 05:21
поделиться

10 ответов

Это совершенно разные конструкции. HashMap - это реализация Map . Карта Map отображает ключи в значения. Поиск ключа происходит с использованием хэша.

С другой стороны, HashSet является реализацией Set . Набор Набор разработан для соответствия математической модели набора. Как вы заметили, HashSet действительно использует HashMap для поддержки своей реализации. Однако он реализует совершенно другой интерфейс.

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

142
ответ дан 23 November 2019 в 21:27
поделиться

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

-1
ответ дан 23 November 2019 в 21:27
поделиться

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

РЕДАКТИРОВАТЬ : Что касается комментария Мэтью, он прав; У меня было наоборот. Внутренняя HashMap имеет ключи с объектами, составляющими элементы Set . Значения HashMap - это объект, который просто хранится в бакетах HashMap.

0
ответ дан 23 November 2019 в 21:27
поделиться

Как следует из названий, HashMap является ассоциативной Map (отображение ключа в значение), a HashSet - это просто Установите .

2
ответ дан 23 November 2019 в 21:27
поделиться

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

3
ответ дан 23 November 2019 в 21:27
поделиться

HashSet реализован в виде HashMap . Это отображение между ключом и НАСТОЯЩИМ объектом.

0
ответ дан 23 November 2019 в 21:27
поделиться

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

Таким образом, HashMap содержит элементы, а HashSet запоминает их хэши.

1
ответ дан 23 November 2019 в 21:27
поделиться

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

Пусть вас не смущают их названия; это совершенно разные вещи.

34
ответ дан 23 November 2019 в 21:27
поделиться

Различия: в отношении иерархии: HashSet реализует Set. HashMap реализует Map и хранит сопоставление ключей и значений .

Использование HashSet и HashMap в отношении базы данных поможет вам понять значение каждого из них.
HashSet: обычно используется для хранения уникальных объектов коллекции. Например, : Его можно использовать как класс реализации для хранения отношения «многие к одному» между
предметом класса и ставкой класса, где (предмет имеет много ставок) HashMap: используется для сопоставления ключа со значением. значение может быть нулевым или любым объектом / списком объекта (который сам по себе является объектом).

1
ответ дан 23 November 2019 в 21:27
поделиться

HashSet - это набор , например {1,2,3,4,5}

HashMap - это карта ключ -> значение (ключ к значению), например {a -> 1, b -> 2, c -> 2, d -> 1}

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

В HashSet не должно быть повторяющихся элементов.

292
ответ дан 23 November 2019 в 21:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: