特にリストにプリミティブな数値データ型ではなく
次に、インターフェースの実装を定義します
List
オブジェクト ラッパー ( Byte
、Integer
、Short
、Long
、Double
、 ) が含まれている場合は、並べ替えが難しくなることがあります。Float
簡単な問題を解決したり、面接官の質問に答えたりするのに非常に役立つ方法を使用することをお勧めします。 まず、 に何を入力するかを選択しましょうList
。Edges
この例では、単純なデータ構造からのグラフ エッジのリスト () を使用します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();
グラフとは何ですか? 離散数学では、グラフはセット ( おそらく、数学的な抽象化に慣れていない人にとって、このような定義はあまり明確ではないので、もっと簡単に言ってみましょう。 グラフ頂点とそれらを接続するエッジの集合です。抽象化の領域からマテリアルの領域に即座に移行するグラフの良い例は、鉄道線路の地図です。 このようなグラフの頂点はステーションです。そうですね、それらの間のパスはエッジです。 |
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;
}
}
この例では、グラフのエッジを重みによって、または頂点src (ソース) から頂点dst (宛先) までの距離によってソートします。最後に、標準的な方法を使用しますjava.util.Arrays.sort ()
。
Arrays.sort(edges, new SortByCost())
これで、オブジェクトで満たされたシートがEdges
昇順 (小さいものから大きいものへ) に並べ替えられました。 ソリューションの作成者は Ethan Arrowood です。
GO TO FULL VERSION