Sortering af objekter i et arraylist

Tags:    java programmering sortering

Hej

Jeg har et lille program i Java, og jeg har to klasser, en klasse der hedder Student og en der hedder School. Klassen School skal holde en liste af students (ArrayList), men jeg vil gerne have at denne ArrayList bliver sorteret ud fra den studerendes årgang, sådan så dem der er første års studerende vises først og dem der er tredje års studerende sidst, når jeg går igennem listen. Jeg har fået af vide at jeg kan bruge metoden sort(liste) fra Collections klassen, men den sorterer den ikke efter årgang, hvordan kan jeg løse dette?

Mine klasser ser sådan her ud
Fold kodeboks ind/udJava kode 


Fold kodeboks ind/udJava kode 




5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 22 karma
Sorter efter stemmer Sorter efter dato
Hej for at sorterer efter årgang skal du lade din Student klasse implementerer interfacet Comparable. Dette interface lader dig specificerer en metode der hedder compareTo(), som Collections.sort() metoden bruger når den skal sortere. Du kan nu i denne specificere hvad den skal returnere til din sort() metode, og derved vælge hvordan Students skal sorteres.

Her er et eksempel hvor jeg har implementeret Comparable interfacet for dig. Læg mærke til at jeg ikke skal importere denne klasse, da den er en klasse der automatisk er importeret til alle dine filer via java.lang pakken.
Fold kodeboks ind/udJava kode 




Indlæg senest redigeret d. 19.03.2012 21:34 af Bruger #4487
Du skal implementer interfacet comparable i student. F.eks:

Fold kodeboks ind/udJava kode 

Jeg skal vist være lidt hurtigere;)



Indlæg senest redigeret d. 19.03.2012 21:36 af Bruger #14029
Hej, jeg havde lavet en fejl, som lasse gjorde mig opmærksom på - når du implementerer, skal du selvfølgelig skrive Comparable<Student> og ikke bare Comparable. Fejlen er rettet og har givet Lasse lidt credit som tak :P



Indlæg senest redigeret d. 19.03.2012 21:38 af Bruger #4487
Hej allesammen

Det virker, tak for hjælpen



Martin
Den har jeg luret på mange gange uden at kunne gennemskue det ordentlig. Det er en rigtig 'nugget'



t