JavaRush /Blog Java /Random-MS /Menggunakan Java Arrays.sort() pada mana-mana senarai obj...

Menggunakan Java Arrays.sort() pada mana-mana senarai objek

Diterbitkan dalam kumpulan
Menyusun boleh menjadi rumit, terutamanya jika senarai anda Listmengandungi pembalut objek ( Byte, Integer, Short, Long, Double, Float) berbanding jenis data berangka primitif. Saya cadangkan menggunakan kaedah yang boleh menjadi sangat berguna untuk menyelesaikan masalah mudah atau menjawab soalan penemuduga. Menggunakan Java Arrays.sort() pada mana-mana senarai objek - 1Pertama, mari kita pilih apa yang akan kita isi List. Dalam contoh ini saya akan menggunakan senarai tepi graf ( Edges) daripada struktur data mudah 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();

Apakah graf?

Dalam matematik diskret, graf ditakrifkan sebagai sepasang set ( V, E), dengan Vsubset bagi set boleh kira arbitrari, dan Eialah subset ( VхV).

Mungkin, bagi mereka yang tidak terbiasa dengan abstraksi matematik, definisi sedemikian tidak akan begitu jelas, jadi katakan dengan lebih ringkas:

Graf ialah himpunan bucu dan tepi yang menghubungkannya. Contoh graf yang baik yang akan segera membawanya dari alam abstraksi ke alam bahan ialah peta landasan kereta api.

Bucu graf sedemikian ialah stesen . Nah, laluan di antara mereka adalah tepi .

Kemudian kami menentukan pelaksanaan antara muka 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;
    }
}
Dalam contoh ini, kita akan mengisih tepi graf mengikut beratnya, atau mengikut jarak dari bucu src (sumber) ke bucu dst (tujuan). Akhirnya, kami menggunakan kaedah standard java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
Sekarang helaian kami yang diisi dengan objek Edgesdiisih dalam tertib menaik (dari terkecil kepada terbesar). Pengarang penyelesaiannya ialah Ethan Arrowood.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION