Почему мне нужно переопределить методы equals и hashCode в Java?
В Java каждый объект имеет доступ к методу equals(), поскольку он наследуется от класса Object. Если два объекта равны в соответствии с методом equals (Object), то вызов метода hashCode для каждого из двух объектов должен давать одинаковый целочисленный результат. Вы должны переопределить hashCode() в каждом классе, который переопределяет equals(). Несоблюдение этого требования приведет к нарушению общего договора для Object.hashCode(), что предотвратит правильное функционирование вашего класса в сочетании со всеми коллекциями на основе хэшей, включая HashMap, HashSet и Hashtable. Если вы не переопределите hashcode(), то реализация по умолчанию в классе Object будет использоваться коллекциями. Эта реализация дает разные значения для разных объектов, даже если они равны в соответствии с методом equals().
hashCode()()
Метод hashcode() возвращает метод хэш-кода для этой строки. HashCode() используется для bucketing в реализациях Hash, таких как HashMap, HashTable, HashSet и т. Д. Значение, полученное от hashCode(), используется как номер ведра для хранения элементов набора / карты. Этот номер ведра является адресом элемента внутри набора / карты.
equals()
Этот конкретный метод используется для обеспечения равного сравнения между двумя объектами. В Java существует два типа сравнений. Один использует оператор «==», а другой - «equals()».
Источник: http://net-informations.com/Java/cJava/hashcode.htm
Отзывы (через Facebook):
Оставить отзыв с помощью аккаунта FaceBook:
В этом примере сравниваются скорости арифметических операций с разными типами данных. Существует большая разница между скоростями операций с использованием...
17 01 2021 16:33:42
Если мы хотим попросить пользователя ввести его, мы будем использовать команду read . Эта команда берет ввод и сохраняет его в переменной. read var1 Давайте рассмотрим простой пример:...
16 01 2021 8:40:15
Класс StringFormat делает его достаточно простым для выравнивания по левому краю, выравнивания по правому краю или центровки строки текста, но, как ни стра...
15 01 2021 15:55:34
Функции могут делать что угодно, но их основной шаблон использования принимает параметры и возвращаемые значения . Математический модуль предоставляет неко...
14 01 2021 14:11:41
Для многих программистов управление памятью Java является одной из наиболее привлекательных функций, потому что Java-программисту никогда не приходится име...
13 01 2021 10:32:15
Основной целью данной книги является наглядная демонстрация приёмов создания программ в одной из самых популярных и доступных сред разработки Delphi/C++Bui...
12 01 2021 15:39:50
Сериализация в Java - это механизм записи состояния объекта в поток байтов, а десериализация - это процесс преобразования потока байтов обратно в копию исх...
11 01 2021 18:40:28
Книга является руководством по программированию в среде Delphi 7. Описывается весь процесс разработки программы: от конструирования диалогового окна до орг...
10 01 2021 10:59:41
Пример Сжатие файлов JPG до определенного размер в C# позволяет вам отрегулировать уровень сжатия JPG файла, пока он не станет больше указанного размера. О...
09 01 2021 11:37:26
Класс File имеет три конструктора и ряд полезных методов. Ниже перечислены три конструктора: Для создания файла используйте метод File.createNewFile(). Это...
08 01 2021 3:59:55
В этом примере используется техника, аналогичная той, которая используется в примере Сделать движущийся фон в C# . Для рисования текста используется градие...
07 01 2021 18:46:43
Функциональное программирование вращается вокруг идеи о том, что программа состоит из набора функций, и они следуют определенным правилам. Это парадигма пр...
06 01 2021 10:35:46
Сериализация - это процесс преобразования объекта в последовательный поток-подобный формат. Часто это означает преобразование его в XML-данные для хранения...
05 01 2021 12:15:25
В этой статье мы обсудим директиву Path и различные методы в Path в C#. Путь - это строка, которая предоставляет расположение файла или каталога. Путь не о...
04 01 2021 23:36:24
Обычно лучше проверить, существует ли файл или каталог, прежде чем пытаться получить к нему доступ. Например, если вы пытаетесь прочитать файл, который не...
03 01 2021 8:14:29
Изучение объектно-ориентированной парадигмы программирования обычно ассоциируется с многочасовым курсом лекций и утомительными лабораторными занятиями, во...
02 01 2021 14:19:14
Класс HashSet расширяет AbstractSet и реализует заданный интерфейс. Набор представляет собой набор, который не содержит повторяющихся элементов и элементы...
01 01 2021 1:40:58
Часто полезно инициализировать ComboBox из перечисления, чтобы пользователь мог выбрать одно из значений перечисления. Вы можете ввести значение в ComboBox...
31 12 2020 5:38:53
путь является посредником между программистом и операционной системой, чтобы информировать двоичный путь файла, где, поскольку Classpath является посредник...
30 12 2020 22:45:16
Строка - это последовательность символов, используемых для хранения данных типа «Halo World!». Поток - это класс ввода / вывода, который используется для ч...
29 12 2020 17:13:21
Сообщение Нарисуйте кривую с разной напряженностью в C# использует метод Graphics класса DrawCurve класса для рисования набора кривых с разными напряжениям...
28 12 2020 10:32:24
Существует множество способов блокировки объекта в соответствии с вашими потребностями. Object.freeze() Object.seal() Object.preventExtensions() Object.fre...
27 12 2020 18:40:29
В этом примере показано, как изменить ориентацию и поля печати в распечатке или предварительном просмотре печати. По умолчанию, когда вы показываете предва...
26 12 2020 5:52:50
Принятие решений является важной частью программирования. Он используется для указания порядка выполнения операторов. На этом уроке вы узнаете, как создава...
25 12 2020 8:19:43
Один из способов рисования теней на C# - рисовать объект, сдвинутый вниз и вправо, светло-серого цвета, как показано слева на рисунке выше. Это работает до...
24 12 2020 6:20:45
Это более графическая версия примера Рассчитайте значение ежемесячной инвестиции в C# . Вместо добавления значений в элемент управления ListView этот приме...
23 12 2020 0:44:55
Примеры изображения Warp произвольно в C#, часть 1 и Изображения Warp произвольно в C#, часть 2 показать, как использовать обратные преобразования для дефо...
22 12 2020 22:30:45
API JDBC использует отдельный класс Date, Time и Timestamp для подтверждения типа данных DATE, TIME и DATETIME из базы данных, но большая часть объектно-ор...
21 12 2020 14:15:40
Языки программирования низкого уровня или низкоуровневые традиционно появились первыми и в последующем стали базисом для развития всей И Т индустрии....
20 12 2020 12:19:22
Согласно официальной документации Python , вы можете заставить сборщика мусора для выпуска unreferenced памяти с помощью gc.collect(). Тем не менее, один и...
19 12 2020 15:45:16
Пример Запуск введенного пользователем кода в C# показывает как позволить пользователю вводить код C#, компилировать во время выполнения и выполнять резуль...
18 12 2020 20:26:23
Пример Сравните скорости условного оператора (тройной оператор? :) и оператор if-else в C# сравнивает производительность двух видов условных тестов. Джонни...
17 12 2020 18:17:48
Пример Понимание бит-масок в C# объясняет, как использовать бит маски. Чтобы определить битовую маску, просто создайте enum и присвойте ему атрибут Flags,...
16 12 2020 16:45:55
Было бы неплохо, если бы вы могли отобразить сообщение о ходе работы над ProgressBar. К сожалению, вы не можете этого сделать. Вы даже не можете помещать я...
15 12 2020 13:51:56
Эта часть позволит вам изучить Javascript с нуля или упорядочить и дополнить существующие знания. Мы будем использовать браузер в качестве окружения, но ос...
14 12 2020 2:52:17
Пример Отображение метафайла Windows (wmf) в C# < / a> показывает, как рисовать метафайл. В этом примере показано, как перечислять записи в метафайле, пред...
13 12 2020 23:16:25
Parse error: syntax error, unexpected ',' in /home/users/9/9165884745/domains/flash-mx.ru/lessons/926.php on line 69