Інтерфейс Comparator (порівнювач) визначає два методи порівняння:

Див. приклад коду
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