3 Stimmen

Wie sortiert man ein Array von Objekten (Punkten) in Java?

Ich möchte also ein Array von Points mit der eingebauten Sortiermethode nach einer bestimmten Koordinate sortieren, sagen wir x. Wie kann ich das tun? Hier ist ein Beispielcode:

Point A[] = new Point[10];
// ... Initialize etc.
Arrays.sort(A, x-coordinate);

Gibt es einen eingebauten Komparator für x-Koordinaten in der Point Class? Wenn nicht, wie kann ich einen erstellen und verwenden. Ein Beispiel wäre toll.

Danke.

8voto

Donal Fellows Punkte 125686

Point ist nicht Comparable Sie müssen also Ihren eigenen Komparator schreiben und ihn beim Aufruf von Arrays.sort . Zum Glück ist das nicht allzu schwer:

class PointCmp implements Comparator<Point> {
    int compare(Point a, Point b) {
        return (a.x < b.x) ? -1 : (a.x > b.x) ? 1 : 0;
    }
}

Arrays.sort(A, new PointCmp());

2voto

bwawok Punkte 13962

Sie können auch Apache Commons Bean Comparator verwenden

http://commons.apache.org/beanutils/apidocs/org/apache/commons/beanutils/BeanComparator.html

Und dann etwas tun wie

import org.apache.commons.beanutils.BeanComparator;

Arrays.sort(A, new BeanComparator("x"));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X