Подтвердить что ты не робот

Разница между HashSet и HashMap?

Кроме того, что HashSet не допускает повторяющихся значений, в чем разница между HashMap и HashSet?

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Не путайте их имена; они очень разные вещи.

Ответ 4

HashSet

  • Класс HashSet реализует интерфейс Set
  • В HashSet мы храним объекты (элементы или значения) например Если у нас есть HashSet строковых элементов, тогда он может отображать набор элементов HashSet: { "Hello", "Hi", "Bye", "Run" }
  • HashSet не позволяет дублировать элементы, которые означают вас не может хранить повторяющиеся значения в HashSet.
  • HashSet разрешает иметь одно нулевое значение.
  • HashSet не синхронизируется, что означает, что они не подходят для потокобезопасных операций, пока они не будут явно синхронизированы. [сходство]

                          add      contains next     notes
    HashSet               O(1)     O(1)     O(h/n)   h is the table 
    

HashMap

  • Класс HashMap реализует интерфейс карты
  • HashMap - это используется для хранения пар ключей и значений. Короче говоря, он поддерживает отображение ключа и значения (класс HashMap примерно эквивалентен Hashtable, за исключением того, что он несинхронизирован и разрешает null.) Это как вы можете представлять элементы HashMap, если он имеет целочисленный ключ и значение типа String: например. {1 → "Hello", 2 → "Hi", 3 → "Bye", 4 → "Выполнить" }
  • HashMap не позволяет дублировать ключи, но позволяет дублировать значения.
  • HashMap разрешает одиночный нулевой ключ и любое количество нулевых значений.
  • HashMap не синхронизируется, что означает, что они не подходят для потокобезопасных операций, пока они не будут синхронизированы явно. [сходство]

                           get      containsKey next     Notes
     HashMap               O(1)     O(1)        O(h/n)   h is the table 
    

Для получения дополнительной информации см. эту статью.

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

Использование HashSet и HashMap в отношении базы данных поможет вам понять значение каждого из них.
HashSet: обычно используется для хранения уникальных объектов коллекции. Например: его можно использовать в качестве класса реализации для хранения отношения "много-к-одному" между
класс Предмет и класс Bid, где (элемент имеет много ставок) HashMap: используется для сопоставления ключа с value.the может быть null или любой объект/список объекта (который сам по себе является объектом).

Ответ 9

Различия между HashSet и HashMap в Java

HashSet внутренне использует HashMap для хранения объектов. Когда добавляется метод (String), он вызывает метод HahsMap put (ключ, значение), где key = String object и value = new Object (Dummy). Так как он не поддерживает дубликатов, поскольку ключи ничего, кроме объекта Value.

Объекты, которые хранятся как ключ в Hashset/HashMap, должны переопределять hashcode и равно контракту.

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

Ответ 10

1) Первое и самое значительное различие между HashMap и HashSet заключается в том, что HashMap представляет собой реализацию интерфейса Map, а HashSet - это реализация интерфейса Set, что означает, что HashMap - это структура данных на основе ключевых значений, и HashSet гарантирует уникальность, не позволяя duplicates. В действительности HashSet является оберткой вокруг HashMap в Java, если вы посмотрите на код add (E e) метода HashSet.java, вы увидите следующий код:

public boolean add(E e) {
  return map.put(e, PRESENT)==null;
}

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

2) Вторая разница между HashMap и HashSet заключается в том, что мы используем метод add() для размещения элементов в Set, но мы используем метод put() для вставки ключа и значения в HashMap в Java.

3) HashSet допускает только один нулевой ключ, но HashMap может допускать один нулевой ключ + несколько нулевых значений.

Это все по разнице между HashSet и HashMap в Java. Таким образом, HashSet и HashMap представляют собой два разных типа коллекции: Set, а другой - Map.

Ответ 11

A HashSet реализуется в терминах HashMap. Это сопоставление между ключом и объектом PRESENT.

Ответ 12

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

Ответ 13

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

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

Ответ 14

Различия между HashSet и HashMap в Java

1). Первая и самая значительная разница между HashMap и HashSet заключается в том, что HashMap представляет собой реализацию интерфейса Map, а HashSet - это реализация интерфейса Set, что означает, что HashMap - это структура данных на основе ключевых значений и HashSet гарантирует уникальность, не допуская дублирования. В действительности HashSet является оберткой вокруг HashMap на Java, если вы посмотрите на метод добавления (E e) метода HashSet.java, вы увидите следующий код:

public boolean add(E e) 
{
    return map.put(e, PRESENT)==null;
}

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

2) Вторая разница между HashMap и HashSet заключается в том, что мы используем метод add() для размещения элементов в Set, но мы используем метод put() для вставки ключа и значения в HashMap в Java.

3) HashSet допускает только один нулевой ключ, но HashMap может допускать один нулевой ключ + несколько нулевых значений.

Это все по разнице между HashSet и HashMap в Java. В итоге HashSet и HashMap представляют собой два разных типа Collection, которые являются Set, а другой - Map.

Ответ 15

HashSet

HashSet - это реализация Set Interface, который не позволяет дублировать значение, все методы, которые находятся в Collection Framework, также находятся в Set Interface по умолчанию, но когда мы говорим о настройке Hash, главное - это объекты, которые будут храниться в HashSet должен переопределить метод equals() и hashCode(), чтобы мы могли проверить равенство, и в нашем наборе не сохранялось дублирующее значение. Если мы создали наши собственные объекты, нам нужно реализовать hashCode() и equal() таким образом которые смогут правильно сравнивать объекты при сохранении в наборе, чтобы дублирующие объекты не сохранялись, если мы не переопределили этот метод, объекты будут использовать реализацию этого метода по умолчанию.

Метод: public boolean add (Object o) Метод используется для добавления элемента в набор, который возвращает false, если его дублирующее значение в случае HashSet в противном случае возвращает true, если добавлено успешно.

HashMap

HashMap - это реализация интерфейса карты, который отображает ключ к значению. Дублировать ключи не допускаются на карте. В основном карта. Интерфейс имеет два класса реализации. HashMap и TreeMap. Основное различие заключается в том, что TreeMap поддерживает порядок объектов, но HashMap будет not.HashMap допускает нулевые значения и нулевые ключи. HashMap не синхронизирован, но среда сбора данных предоставляет методы, чтобы мы могли синхронизировать их, если несколько потоков собираются получить доступ к нашему хэшмапу, а один поток структурно изменит нашу карту.

Метод public object put (Object Key, Object value) используется для добавления элемента в карту.

Ответ 16

HashMap - это реализация Map, позволяющая дублировать значения, но не дублировать ключи.. Для добавления объекта требуется пара ключей/значений. Разрешены значения Null Keys и Null. например:

{в- > 3, миро- > 5, IS- > 2, nice- > 4}

HashSet - это реализация Set, которая не позволяет дублировать. Если вы попытались добавить дублированный объект, вызов метода public boolean add(Object o), тогда набор остается неизменным и возвращает false. например:

[, мир, есть хороший]

Ответ 17

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

Ответ 18

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

Ответ 19

HashMaps разрешить один нулевой ключ и нулевые значения. Они не синхронизированы, что повышает эффективность. Если это необходимо, вы можете синхронизировать их с помощью Collections.SynchronizedMap()

Hashtables не разрешать нулевые ключи и синхронизировать.

Ответ 20

HashMap - это реализация интерфейса Map HashSet - это реализация Set Interface

HashMap Сохраняет данные в форме пары значений ключа HashSet Сохранить только объекты

Метод put используется для добавления элемента в карту Добавить метод используется для добавления элемента Set

В хэш-карте значение hashcode вычисляется с использованием ключевого объекта Здесь объект-член используется для вычисления значения hashcode, которое может быть одинаковым для двух объектов, поэтому метод equal() используется для проверки равенства, если он возвращает false, что означает, что два объекта различаются.

HashMap быстрее, чем hashset, потому что для доступа к объекту используется уникальный ключ HashSet медленнее, чем Hashmap

Ответ 21

Hashset Internally реализует HashMap. Если вы видите внутреннюю реализацию  на http://javaconceptoftheday.com/how-hashset-works-internally-in-java/ значения, вставленные в HashSet, хранятся как ключи в HashMap, а значение - объект Dummy класса Object. Разница между HashMap и HashSet: - 1. HashMap содержит пары ключевых значений, и к каждому значению может обращаться ключ, где, когда HashSet необходимо повторять каждый раз, когда нет метода get. 2. HashSet реализует интерфейс карты и позволяет одному нулевому значению в качестве значения ключа и нескольких нулевых значений в качестве значений. Если HashSet реализует интерфейс Set, допускает только одно нулевое значение и не дублирует значения. (Повторите один нулевой ключ в ключе HashMap, следовательно, один null в HashSet, поскольку HashSet реализует HashMap внутренне). 3.HashSet и HashMap не поддерживают порядок вставки во время итерации.