[ start | index | login ]
start > Sortieren einer Collection

Sortieren einer Collection

Created by funzel. Last edited by funzel, 7 years and 279 days ago. Viewed 29,601 times. #2
[diff] [history] [edit] [rdf]
labels
attachments
Collections in Java kann man auf einfache Art und Weise sortieren. In der statischen Klasse Collections gibt es eine Methode sort(...) um eine Collection zu sortieren. Die Methode sortiert automatisch vergleichbare Objekte (String, int, ...). Will man ausserhalb der "natuerlichen" Reihenfolge eines Objektes die Collection sortieren, muss braucht man ein Vergleichsobjekt.

Dazu braucht man ein Comparator Objekt, das weiss wie man zwei zu sortierende Objekte in eine Reihenfolge bekommt (welches vor welchem kommt).

public class LastNameComparator() {
    public int compare(Object o1, Object o2) {
        String name1 = ((Customer) o1).getLastName();
        String name2 = ((Customer) o2).getLastName();
        return name2.compareTo(name1);
    }
}

List customers = new ArrayList(); // Fuellen von kunden, dann Sortieren ueber den Nachnamen

Collections.sort(kunden, new LastNameComparator());

oder als Inner Class:

List customers = new ArrayList();
// Fuellen von kunden, dann Sortieren ueber den Nachnamen

Collections.sort(kunden, new Comparator() { public int compare(Object o1, Object o2) { String name1 = ((Customer) o1).getLastName(); String name2 = ((Customer) o2).getLastName(); return name2.compareTo(name1); } });

Einen sortierten Iterator einer Map, umgekehrt sortiert nach den Values:

public Iterator iterator() {
    List keys = new LinkedList(linkMap.keySet());
    Collections.sort(keys, new Comparator() {
      public int compare(Object o1, Object o2) {
        // use "-" because we want decreasing order
        return -((Integer) linkMap.get(o1)).compareTo(((Integer) linkMap.get(o2)));
      }
    });
    return keys.iterator();
  }
Eventuell ist der Cast auf Integer nicht noetig.
no comments | post comment

What is Javangelist?
Javangelist is a website with help for professional Java developers.

1466 snips from 406 users.

Help
For text formatting help see snipsnap-help.

NEU: Jobs
Aktuelle Jobangebote.

Logged in Users: (0)
… and a Guest.



February 2012
SunMonTueWedThuFriSat
1234
567891011
12131415161718
19202122232425
26272829

Blogrolling:
>>Langreiter
>>Earl
>>henso
>>Lambda
>>e7l3

BlogShares
XHTML 1.0 validated
CSS validated
RSS 2.0 validated
RSS Feed

Powered by SnipSnap 1.0b3-uttoxeter

snipsnap.org | Copyright 2000-2005 Matthias L. Jugel and Stephan J. Schmidt