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