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

Методи equals та hashcode Метод 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;

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика