Page 88 - 4836
P. 88
щоб це було можливо необхідно подбати про метод
compareTo у класі, об’єкти якого будуть порівнюватись. За
замовчуванням метод compareTo порівнює об’єкти за хеш-
кодом об’єкта, який залежить від об’єктного посилання, а не
від полів об’єкта.
Навіщо саме compareTo і навіщо реалізовувати
інтерфейс Comparable? Чому не реалізувати метод з іменем
comparePerson. Це звичайно ж працюватиме, проте в
результаті втрачаємо ряд функціональних можливостей
реалізованих у великій кількості класів Java, які можуть
полегшити роботу над вашим власним прикладенням. Тобто
існують уже наперед розроблені своєрідні "універсальні"
класи, що орієнтовані на роботу з об’єктами типу Comparable.
Правильніше казати, що їхні методи створені таким чином,
щоб викликати метод compareTo. І в ряді випадків вони
можуть бути доволі корисні. Наприклад, існує клас
java.util.Arrays, в якому реалізовано метод sort, що дозволяє
відсортувати масив будь-якого об’єктного типу. Тобто нам
непотрібно реалізовувати вже власне сортування, достатньо
на його вхід подати наш об'єктний масив.
Наприклад так:
Person[] persons= new Person[3];
persons[0]=new Person("Назаренко","Іван");
persons[1]=new Person("Козаченко","Петро");
persons[2]=new Person("Перебийніс","Василь");
Arrays.sort (persons);
for(Person p:persons){
System.out.println (p);
}
Щоб мати змогу зробити щось подібне (відсортувати
об’єкти по прізвищу і далі вивести відсортований список)
86