Page 184 - 6253
P. 184

7.3. Використання компараторів для сортування елементів колекції


                  Класи  TreeSet  і  TreeМар  забезпечують  представлення  елементів  колекції  та

            карти  у  відсортованому  порядку.  При  цьому  мається  на  увазі,  що  елементи

            відсортовані у порядку їх зростання і сортування відбувається по першому полю (у

            випадку колекції) або ключу (у випадку карти). Для визначення  власного порядку

            сортування  використовуються  компаратори,  що  реалізуються  за  допомого

            інтерфейсу Comparator.

                  Інтерфейс  Comparator  –  це  узагальнений  інтерфейс,  який  оголошується

            наступним чином:


            interface Comparator <T>

                  Параметр Т вказує на тип об'єктів, які порівнюються між собою.

                  У інтерфейсі Comparator визначено два методи з наступними сигнатурами:


            int compare(Т об’єкт1, Т об’єкт2)
            boolean equals(object об’єкт)

                  Метод  compare()  призначений  для  порівняння  двох  елементів  колекції  або


            карти  у  визначеному  порядку.  Метод  повертає  значення  нуль,  якщо  об'єкти
            еквівалентні,  додатне  значення,  якщо  об’єкт1  більший  за  об’єкт2  та  від’ємне


            значення,  якщо  об’єкт1  менший  за  об’єкт2.  Також  методом  генерується  виняток

            ClassCastException  у  випадку,  якщо  типи  порівнюваних  об’єктів  не  сумісні  між

            собою.

                  Метод equals() призначений для перевірки на еквівалентність двох об’єктів. Він

            повертає значення true, якщо об’єкти є еквівалентними між собою та значення false

            у протилежному випадку.

                  Нижче  представлено  приклад,  який  демонструє  потужність  налаштовуваних

            компараторів.  Він  реалізує  метод  compare()  для  вибору  поля  по  якому  має

            відбуватися сортування елементів колекції.

                  import java.util.Comparator;

                  import java.util.TreeSet;



                  class Car implements Comparable<Car> {




                                                              183
   179   180   181   182   183   184   185   186   187   188   189