Інтерфейс Comparator (порівнювач) визначає два методи порівняння:
compare(o1, o2) — повертає 0, якщо об'єкти o1 і o2 тотожні. Повертає додатне значення, якщо o1 більше ніж o2. Інакше повертає від'ємне значення. Перевизначенням методу можна змінити спосіб упорядкування об'єктів. Наприклад, для упорядкування у зворотному порядку.
equals(o) — повертає true, якщо об'єкти o і той, що викликає метод, є об'єктами Comparator і тотожні відносно використаного відношення порядку. Інакше повертаєть false.
package work;
import java.util.*;
class Dog implements Comparator<Dog>, Comparable<Dog>
{ private String name;
private int age;
Dog() { } Dog (String s, int n) { name = s; age = n; }
public String getDogName() { return name; }
public int getDogAge() { return age; }
@Override public int compareTo(Dog d){ return(this.name).compareTo(d.name); }
@Override public int compare(Dog d1, Dog d2) { return d1.age-d2.age;}
}
public class Work
{ public static void main(String args[])
{ ArrayList<Dog> a = new ArrayList<Dog>();
a.add(new Dog("Сірко", 4));
a.add(new Dog("Лиско",10));
a.add(new Dog("Бровко",7));
a.add(new Dog("Рябко", 8));
for (Dog b: a) System.out.print(b.getDogName() + " ");
System.out.println();
Collections.sort(a);
for (Dog b: a) System.out.print(b.getDogName() + " ");
System.out.println(" ");
Collections.sort(a, new Dog());
for (Dog b: a) System.out.print(b.getDogName() +" : "
+ b.getDogAge() + " ");
System.out.println(" ");
}
}
з таким виведенням.Сірко Лиско Бровко Рябко Бровко Лиско Рябко Сірко Сірко : 4 Бровко : 7 Рябко : 8 Лиско : 10