Могу ли я использовать функцию hashCode класса, чтобы проверить, имеют ли оба значения одинаковые значения для areContentsTheSame в обратном вызове diffutils? - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь реализовать RecyclerView ListAdapter с обратным вызовом DiffUtils, чтобы обновлять / вставлять только те строки, которые были изменены не все.Для реализации я должен переопределить эти функции из утилит diff areItemsTheSame и areContentsTheSame.Я могу проверить areItemsTheSame, используя идентификатор каждого объекта, который я получаю из базы данных.Но для areContentsTheSame я не хочу писать функцию равенства и сопоставлять каждое поле с помощью метода .equals или аналога.Мне интересно, могу ли я использовать функцию hashCode по умолчанию из класса?Если нет, могу ли я переопределить функцию hashCode следующим образом?

public class Person {
  String name;
  String surname;
  String country;
  int age;    

  public Person(String name, String surname, String country, int age) {
      this.name = name;
      this.surname = surname;
      this.country = country;
      this.age = age;
  }

  @Override
  public int hashCode() {
      int prime=31;
      int sum = prime*this.name.hashCode();
      sum=sum+this.surname.hashCode();
      sum=sum+this.country.hashCode();
      sum=sum+this.age;
      return sum;
  }

}


...