JavaRush /Java Blog /Random-ID /Menggunakan Java Arrays.sort() pada daftar objek apa pun

Menggunakan Java Arrays.sort() pada daftar objek apa pun

Dipublikasikan di grup Random-ID
Pengurutan bisa jadi rumit, terutama jika daftar Anda Listberisi pembungkus objek ( Byte, Integer, Short, Long, Double, Float) dan bukan tipe data numerik primitif. Saya menyarankan menggunakan metode yang bisa sangat berguna untuk memecahkan masalah sederhana atau menjawab pertanyaan pewawancara. Menggunakan Java Arrays.sort() pada daftar objek apa pun - 1Pertama, mari kita pilih apa yang akan kita isi List. Dalam contoh ini saya akan menggunakan daftar tepi grafik ( Edges) dari struktur data sederhana 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();

Apa itu grafik?

Dalam matematika diskrit, graf didefinisikan sebagai sepasang himpunan ( V, E), yang Vmerupakan himpunan bagian dari himpunan sembarang yang dapat dihitung, dan Emerupakan himpunan bagian ( VхV).

Mungkin bagi yang belum terbiasa dengan abstraksi matematika, definisi seperti itu tidak akan terlalu jelas, jadi katakanlah lebih sederhana:

Graf adalah kumpulan simpul dan sisi yang menghubungkannya. Contoh grafik yang baik yang akan langsung membawanya dari ranah abstraksi ke ranah material adalah peta rel kereta api.

Simpul dari graf tersebut adalah stasiun . Ya, jalur di antara mereka adalah tepian .

Kemudian kita mendefinisikan implementasi antarmuka 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;
    }
}
Pada contoh ini, kita akan mengurutkan sisi-sisi grafik berdasarkan bobotnya, atau berdasarkan jarak dari titik src (sumber) ke titik dst (tujuan). Terakhir, kami menggunakan metode standar java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
Sekarang sheet kita yang berisi objek Edgesdiurutkan dalam urutan menaik (dari terkecil ke terbesar). Penulis solusinya adalah Ethan Arrowood.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION