JavaRush /Java-Blog /Random-DE /Verwenden von Java Arrays.sort() für eine beliebige Liste...

Verwenden von Java Arrays.sort() für eine beliebige Liste von Objekten

Veröffentlicht in der Gruppe Random-DE
Das Sortieren kann schwierig sein, insbesondere wenn Ihre Liste ListObjekt-Wrapper ( Byte, Integer, Short, Long, Double, Float) anstelle primitiver numerischer Datentypen enthält. Ich schlage vor, eine Methode zu verwenden, die für die Lösung einfacher Probleme oder die Beantwortung der Frage eines Interviewers sehr nützlich sein kann. Verwendung von Java Arrays.sort() für eine beliebige Liste von Objekten - 1Wählen wir zunächst aus, womit wir unser füllen möchten List. In diesem Beispiel verwende ich eine Liste von Diagrammkanten ( Edges) aus einer einfachen Datenstruktur Graph:
// Очень простой класс Edge (рёбро графа)
public class Edge {
    public Vertex src;
    public Vertex dst;
    public double cost;

    // создание ребра между двух вершин
    Edge(Vertex s, Vertex d, double c) {
        src = s;
        dst = d;
        cost = c;
    }
}
// Список рёбер
Edge[] edges = graph.getEdges();

Was ist ein Diagramm?

In der diskreten Mathematik wird ein Graph als Paar von Mengen ( V, E) definiert, wobei Ves sich um eine Teilmenge einer beliebigen abzählbaren Menge handelt und Ees sich um eine Teilmenge ( VхV) handelt.

Wahrscheinlich wird eine solche Definition für diejenigen, die nicht mit mathematischen Abstraktionen vertraut sind, nicht ganz klar sein, also sagen wir es einfacher:

Ein Graph ist eine Sammlung von Eckpunkten und sie verbindenden Kanten. Ein gutes Beispiel für einen Graphen, der sofort vom Bereich der Abstraktion in den Bereich des Materiellen führt, ist eine Karte von Eisenbahnschienen.

Die Eckpunkte eines solchen Graphen sind Stationen . Nun, die Wege zwischen ihnen sind Kanten .

Dann definieren wir die Implementierung der Schnittstelle java.util.Comparator:
class SortByCost implements Comparator<Edge> {
    public int compare(Edge a, Edge b) {
        if ( a.cost < b.cost ) return -1;
        else if ( a.cost == b.cost ) return 0;
        else return 1;
    }
}
In diesem Beispiel sortieren wir die Kanten des Diagramms nach ihrem Gewicht oder nach der Entfernung vom Scheitelpunkt src (Quelle) zum Scheitelpunkt dst (Ziel). Schließlich verwenden wir die Standardmethode java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
Nun wird unser mit Objekten gefülltes Blatt Edgesin aufsteigender Reihenfolge sortiert (vom Kleinsten zum Größten). Der Autor der Lösung ist Ethan Arrowood.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION