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(); } }