Мне было интересно, какие collection
классы в java используют hashcode
объекта?Какие классы реализуют hashCode?
Это только HashSet
, HashMap
, HashTable
или LinkedHashMap
или их больше?
Мне было интересно, какие collection
классы в java используют hashcode
объекта?Какие классы реализуют hashCode?
Это только HashSet
, HashMap
, HashTable
или LinkedHashMap
или их больше?
Взято непосредственно с hashCode method’s JavaDoc.
Этот метод поддерживается в пользу хэш-таблицы, такие как те, которые обеспечивается HashMap.
Так что да, метод используется для хранения объектов в реализациях Карт. Также обратите внимание на эту статью: The-3-things-you-should-know-about-hashcode. Я всегда ссылаюсь на него, когда у меня возникают сомнения в том, что я использую hashCode и использую его.
Думаю, он уже это знает. Он спрашивает >> какие классы << use' Object.hashCode() '. –
Да. Как его использует HashSet, HashMap, что еще есть? –
Я считаю, что понимаю, что вы имеете в виду, вам интересно, как класс коллекции находит элемент в классе коллекции?
Это зависит от класса коллекции. Некоторые используют equals и hashcode, другие используют оба. Хэш-код объекта должен быть уникальным, почти как идентификатор объекта. Я не верю, что java имеет документацию о том, какие классы классов используют hashcode или equals для сравнения, но вы можете скачать источники jdk и проверить себя!
«Хэш-код объекта должен быть уникальным» является довольно большим преувеличением. [Документы] (http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode%28%29) явно говорят, что не обязательно быть уникальным, просто это улучшит производительность хеш-таблиц. – resueman
Не могли бы вы перефразировать свой вопрос? Непонятно, что вы задаете –
Вы пытались посмотреть исходный код библиотек Java? –
Откройте исходный код в вашей среде IDE, выберите Object.hashCode() и выполните «Поиск использования». Это покажет вам весь код, который его использует. –