JavaRush /Java Blog /Random-JA /オブジェクトのリストに対する Java Arrays.sort() の使用

オブジェクトのリストに対する Java Arrays.sort() の使用

Random-JA グループに公開済み
特にリストにプリミティブな数値データ型ではなくListオブジェクト ラッパー ( ByteIntegerShortLongDouble、 ) が含まれている場合は、並べ替えが難しくなることがあります。Float簡単な問題を解決したり、面接官の質問に答えたりするのに非常に役立つ方法を使用することをお勧めします。 オブジェクトのリストに対する Java Arrays.sort() の使用 - 1まず、 に何を入力するかを選択しましょうListEdgesこの例では、単純なデータ構造からのグラフ エッジのリスト () を使用します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();

グラフとは何ですか?

離散数学では、グラフはセット ( VE) のペアとして定義されます。ここで、Vは任意の可算セットのサブセットであり、Eはサブセット (VхV) です。

おそらく、数学的な抽象化に慣れていない人にとって、このような定義はあまり明確ではないので、もっと簡単に言ってみましょう。

グラフ頂点とそれらを接続するエッジの集合です。抽象化の領域からマテリアルの領域に即座に移行するグラフの良い例は、鉄道線路の地図です。

このようなグラフの頂点はステーションです。そうですね、それらの間のパスはエッジです。

次に、インターフェースの実装を定義します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 です。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION