Das Sortieren kann schwierig sein, insbesondere wenn Ihre Liste
Dann definieren wir die Implementierung der Schnittstelle
List
Objekt-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. Wä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 ( 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 . |
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 Edges
in aufsteigender Reihenfolge sortiert (vom Kleinsten zum Größten). Der Autor der Lösung ist Ethan Arrowood.
GO TO FULL VERSION