Sortering af objekter ved brug af Comparable

Tags:    java

Hejsa.

Jeg ved det kan lade sig gøre at sortere en collection med Collection.sort(minCollection<T>;) ved at implementere interfacet Comparable.

Lad os sige jeg har en klasse Person. En person har en alder og et navn. Jeg kunne godt tænke mig at have mulighed for at sortere personerne, når jeg har dem i en liste, så jeg tænke på, at jeg kunne bruge Comparable. Hvis det var efter alder ville jeg kunne få det til at virke ved at gøre sådan her:
Fold kodeboks ind/udKode 

Men hvad så, hvis jeg ønsker at gøre det efter alfabetisk rækkefølge? Det kan jeg ikke helt finde ud af. Håber I kan hjælpe.

På forhånd - tak!

MVH.



Indlæg senest redigeret d. 18.08.2007 22:54 af Bruger #12033
2 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Der findes et andet interface der hedder Comparator<T>, ud fra det kan du så lave nogle comparator objekter, f.eks. efter leksikalsk ordning.

du sorterer da listen således:
Collection.sort(minCollection<T>, Comparator<T>;);

evt. kan du implementere dem som "anonyme klasser" i din klasse:

public static final Comparator<Person> enordning = Comparator<Person>{
public int compare(Person p1, Person p1){
return //something;
}
};

se evt. http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html

mvh
Troels

ps. Jeg har ikke testet koden



hvad med?

public int compareTo(Person p){
return this.name.compareTo(p.getName())
}


kan ikke helt gennemskue hvad b er i den kode du viste så jeg skrev p i stedet.



t