Я читал/исследовал причину, по которой 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