23. januar 2003 - 11:56Der er
7 kommentarer og 1 løsning
Sortering af en ArrayListe
Hejsa, jeg er lige begyndt på at bruge Java, og er derfor ikke helt stiv i det. Det problem jeg har er nok kommet op en del gange før, men her er det. Jeg har en arrayListe, og i den er har jeg lagt 3 string´s. Dem vil jeg gerne sortere, så de kommer i alfabetisk-orden. Når jeg adder dem til min liste kunne de, ser den sådan ud: list.add(new Filmen("James bond","DvD","Action"));. Håber at der er en der kan hjælpe mig :-)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
public class SortArrayList { public static void main(String[] args) { List lst = new ArrayList(); lst.add("CCC"); lst.add("BB"); lst.add("A"); for(int i = 0; i < lst.size(); i++) { System.out.println((String)lst.get(i)); } Collections.sort(lst); for(int i = 0; i < lst.size(); i++) { System.out.println((String)lst.get(i)); } } }
public class SortArrayListComplex { public static void main(String[] args) { List lst = new ArrayList(); lst.add(new Data("CCC","1")); lst.add(new Data("BB", "2")); lst.add(new Data("A", "3")); for(int i = 0; i < lst.size(); i++) { System.out.println((Data)lst.get(i)); } Collections.sort(lst, new Cmp()); for(int i = 0; i < lst.size(); i++) { System.out.println((Data)lst.get(i)); } } }
class Data { private String v1; private String v2; public Data(String v1, String v2) { this.v1 = v1; this.v2 = v2; } public String toString() { return (v1 + " " + v2); } public String getV1() { return v1; } public String getV2() { return v2; }
}
class Cmp implements Comparator { public int compare(Object o1, Object o2) { return ((Data)o1).getV1().compareTo(((Data)o2).getV1()); } public boolean equals(Object obj) { return false; } }
Du skal anvende en comparator til at sammenligne dine selv defineret objekter. Det er et interface som skal implementeres og har metoden compareTo(Object obj).
Vrøvl.. hehe Comparator har en metode der hedder compare(Object o1, Object o2) det er Comparable der har metoden compareTo(Obejct obj) Brug den frem gangs måde Arne har lavet med klassen cmp.
det antages, at filmnavn er af typen String og er en membervariabel i Filmen, samt at der findes en getFilmnavn i Filmen som returnere filmnavn.
Benyt Collections.sort(lst);
da lst nu indeholder Filmen som implementere Comparable jf. javadoc til Collections.sort:
public static void sort(List list)
Sorts the specified list into ascending order, according to the natural ordering of its elements. All elements in the list must implement the Comparable interface. Furthermore, all elements in the list must be mutually comparable (that is, e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the list).
Tak skal i have, for de svar jeg har fået. Det er meget nice at der kommer et svar så hurtigt på mit sprøgsmål. Det her er helt klart et sted jeg vil bruge fremover, hvis jeg har et sprøgsmål om Java. :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.