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



кроме того, что HashSet не позволяет дублировать значения, в чем разница между HashMap и Hashset?



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

839   21  

21 ответов:

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

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

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

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

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

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

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

HashSet

  1. класс HashSet реализует интерфейс Set
  2. в HashSet мы храним объекты (элементы или значения) например, если у нас есть хэш-набор строковых элементов, то он может изображать a набор элементов HashSet: {"Hello", "Hi", "Bye", "Run"}
  3. HashSet не позволяет дублировать элементы, которые означают вас не удается сохранить повторяющиеся значения в HashSet.
  4. HashSet позволяет иметь одно нулевое значение.
  5. HashSet не является синхронизированы, что означает, что они не подходят для потокобезопасных операций до тех пор, пока не будут синхронизированы явно.[сходство]

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

HashMap

  1. класс HashMap реализует интерфейс Map
  2. HashMap является используется для хранения пар ключ-значение. Короче говоря, он поддерживает сопоставление ключа и значения (класс HashMap примерно эквивалентен Hashtable, за исключением того, что он несинхронизирован и допускает нули.) Этот как вы могли представлять элементы HashMap, если он имеет целочисленный ключ и значение типа строки: например {1->"Привет", 2 - >"Привет", 3 - > " пока", 4 - >"Run"}
  3. HashMap не позволяет дублировать ключи, однако он позволяет иметь повторяющиеся значения.
  4. HashMap разрешает один нулевой ключ и любое количество нулевых значений.
  5. HashMap не синхронизируется, что означает, что они не подходят для потокобезопасных операций до тех пор, пока не будут синхронизированы явно.[сходство]

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

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

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

Не путайте их имена; они глубоко разные вещи.

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

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

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

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

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

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

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

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

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

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

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

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

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

HashSet внутренне использует HashMap для хранения объектов.при добавление(string) метод, называется он называет HahsMap поставить(ключ,значение метода), где key=string объект & значение=новый объект(манекен).так что поддерживать не дублирует, потому что ключи ничего, кроме объекта значения.

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

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

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

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

EDIT: чтобы обратиться к комментарию Мэтью, он прав; у меня было это назад. Внутренняя хэш-карта имеет ключ С объектами которые составляют набор элементов. Значения HashMap-это объект, который просто хранится в ведрах HashMap.

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

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

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

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

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

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

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

HashSet

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

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

HashMap

HashMap-это реализация интерфейса Map, который отображает ключ к значению.Дубликаты ключей не допускаются на карте.В основном интерфейс карты имеет два класса реализации HashMap и TreeMap основное различие заключается в том, что TreeMap поддерживает порядок объектов, но HashMap не будет.Хранилище HashMap допускает значения NULL и null-ключи.HashMap не синхронизирован,но Collection framework предоставляет методы, чтобы мы могли синхронизировать их, если несколько потоков собираются получить доступ к нашей hashmap и один поток структурно изменить нашу карту.

метод метод public Object put (ключ объекта,значение объекта) используется для добавления элемента в карту.

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

{The - > 3, world - > 5, is - > 2, nice - >4}

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

[the, world, is, nice]

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

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

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

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

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

Hashtables не допускает null-ключи и синхронизируются.

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

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

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

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

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

Comments

    Ничего не найдено.