Методи equals та hashcode презентация




Слайды и текст этой презентации
Слайд 1
Описание слайда:
Перевизначення методів equals та hashCode


Слайд 2
Описание слайда:
Методи equals та hashcode Метод equals() – перевірка рівності елементів. Типове застосування – пошук в масивах, колекціях, картах. Метод hashCode() – повертає хеш-функцію об'єкта. Якщо цей метод перевизначено, елементи можна використовувати в HashSet, а також як ключі HashMap. Якщо для цих типів перевизначається equals(), то повинен бути перевизначений і hashcode() .

Слайд 3
Описание слайда:
Що можна сказати про код class MyClass { int a; @Override public boolean equals(MyClass other) { return this.a == other.a; } }

Слайд 4
Описание слайда:
Загальні вимоги до equals Рефлексивність. Для будь-якого посилання ref ref.equals(ref) повинно завжди давати true. Симетричність. x.equals(y)дорівнюєо true тоді і тільки тоді, коли y.equals(x). Транзитивність. Якщо x.equals(y), y.equals(z), то x.equals(z). Несуперечливість. Різні виклики equals для тих же об'єктів повинні давати той самий результат, якщо самі об'єкти не змінилися. Порівняння з null. Для кожного не-null посилання ref.equals(null) завжди false. Часто перевіряється ще й відповідність типів.

Слайд 5
Описание слайда:
Загальні вимоги до hashCode Несуперечливість під час виконання – різні виклики того самого об'єкта повинні давати той самий результат, якщо сам об'єкт не змінився. Для рівних об'єктів значення хеш-функції повинні співпадати. Для нерівних об'єктів неспівпадіння не обов'язкове, але дуже рекомендується.

Слайд 6
Описание слайда:
Можлива реалізація equals public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Kl other = (Kl) obj; if (this.a != other.a) { return false; } if (this.b != other.b) {return false; } if (this.c != other.c) { return false; } return true; }

Слайд 7
Описание слайда:
Можлива реалізація equals public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Kl other = (Kl) obj; if (this.a != other.a) { return false; } if (this.b != other.b) {return false; } if (this.c != other.c) { return false; } return true; }

Слайд 8
Описание слайда:
Можлива реалізация hashCode public int hashCode() { int hash = 3; hash = 31 * hash + this.a; hash = 31 * hash + this.b; hash = 31 * hash + this.c; return hash; }

Слайд 9
Описание слайда:
Або: public int hashCode() { return this.toString().hashCode(); }

Слайд 10
Описание слайда:
Методи equals та compareTo Природно, ці методи повинні бути узгоджені між собою. Якщо compareTo визначений належним чином, то equals може бути визначений, наприклад, так: return compareTo(other)==0;


Скачать презентацию на тему Методи equals та hashcode можно ниже:

Похожие презентации