Я читал/исследовал причину, по которой HashMap
быстрее, чем HashSet
.Почему HashMap быстрее, чем HashSet?
Я не совсем понимая, следующие высказывания:
HashMap
быстрееHashSet
, поскольку значения связаны с уникальным ключом.В объекте
HashSet
объект-член используется для вычисления значения хэш-кода, которое может быть одинаковым для двух объектов, поэтому методequals()
используется для проверки равенства. Если он возвращаетfalse
, это означает, что два объекта разные. ВHashMap
значение хэш-кода вычисляется с использованием ключевого объекта.Значение hashcode
HashMap
рассчитывается с использованием ключевого объекта. Здесь объект-член используется для вычисления хэш-кода, который может быть одинаковым для двух объектов, поэтому методequals()
используется для проверки равенства. Если он возвращаетfalse
, это означает, что два объекта разные.
В заключение мой вопрос:
Я думал
HashMap
иHashSet
вычислить хэш-код таким же образом. Почему они разные?Можете ли вы привести конкретный пример того, как
HashSet
иHashMap
вычислять хэш-код по-разному?Я знаю, что такое «ключевой объект», но что он означает «объект-член»?
HashMap
может делать то же, что иHashSet
, и быстрее. Зачем нам нуженHashSet
? Пример:HashMap <Object1, Boolean>= new HashMap<Object1, boolean>(); map.put("obj1",true); => exist map.get("obj1"); =>if null = not exist, else exist
Вы должны прочитать о различии между 'Map' и' Set'. Это два разных типа «Коллекция». Как только вы это сделали, должно быть понятно, почему получение определенного объекта с карты происходит быстрее, чем из набора. – Magnilex
Hashset построен на HashMap. И Set используется для уникальности. Это не пара коллекций ключевых значений. –
Да. Я знаю, что они реализуют разные интерфейсы. Но некоторые люди говорят, что hashset использует hashmap в backend. Если это правда, почему hashset будет медленнее, чем hashmap? – runcode