Dette eksemplet implementerer en Comparator for Person-objekter og tar utgangspunkt i eksempelkode for Person-grensenitt og Person1- og Person2-implementasjoner

Implementasjon av Comparator for Person-objekter (egentlig instanser av klasser som implementerer Person-grensesnittet), som først sorterer på etternavn (givenName) og deretter på etternavn (familyName):

package interfaces;

import java.util.Comparator;

public class PersonComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        int diff = p1.getFamilyName().compareTo(p2.getFamilyName());
        if (diff == 0) {
            diff = p1.getGivenName().compareTo(p2.getGivenName());
        }
        return diff;
    }
}

Koden utnytter det faktum at String-klassen allerede implementerer Comparable<String> og dermed har en compareTo-metode med akkurat den logikk vår compare-metode trenger.

Hovedprogram som sorterer en liste med Person1- og Person2-objekter, altså instanser av klasser som implementerer Person-grensesnittet:

package interfaces;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class PersonProgram {

    private List<Person> personer;
    
    public void init() {
        personer = new ArrayList<Person>(Arrays.asList(
                new Person1("Hallvard", "Trætteberg"),
                new Person2("Marit Reitan"),
                new Person2("Jens Trætteberg"),
                new Person1("Anne", "Reitan")
                ));
    }
    
    public void run() {
        System.out.println("Før sortering: " + personer);
        Collections.sort(personer, new PersonComparator());
        System.out.println("Etter sortering: " + personer);
    }
    
    public static void main(String[] args) {
        PersonProgram program = new PersonProgram();
        program.init();
        program.run();
    }
}