2015-09-12 2 views
-3

Мне было интересно, какие collection классы в java используют hashcode объекта?Какие классы реализуют hashCode?

Это только HashSet, HashMap, HashTable или LinkedHashMap или их больше?

+2

Не могли бы вы перефразировать свой вопрос? Непонятно, что вы задаете –

+1

Вы пытались посмотреть исходный код библиотек Java? –

+1

Откройте исходный код в вашей среде IDE, выберите Object.hashCode() и выполните «Поиск использования». Это покажет вам весь код, который его использует. –

ответ

0

Взято непосредственно с hashCode method’s JavaDoc.

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

Так что да, метод используется для хранения объектов в реализациях Карт. Также обратите внимание на эту статью: The-3-things-you-should-know-about-hashcode. Я всегда ссылаюсь на него, когда у меня возникают сомнения в том, что я использую hashCode и использую его.

+0

Думаю, он уже это знает. Он спрашивает >> какие классы << use' Object.hashCode() '. –

+0

Да. Как его использует HashSet, HashMap, что еще есть? –

0

Я считаю, что понимаю, что вы имеете в виду, вам интересно, как класс коллекции находит элемент в классе коллекции?

Это зависит от класса коллекции. Некоторые используют equals и hashcode, другие используют оба. Хэш-код объекта должен быть уникальным, почти как идентификатор объекта. Я не верю, что java имеет документацию о том, какие классы классов используют hashcode или equals для сравнения, но вы можете скачать источники jdk и проверить себя!

+0

«Хэш-код объекта должен быть уникальным» является довольно большим преувеличением. [Документы] (http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode%28%29) явно говорят, что не обязательно быть уникальным, просто это улучшит производительность хеш-таблиц. – resueman

Смежные вопросы