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
   83   84   85   86   87   88   89   90   91   92   93