JavaRush /Blog Jawa /Random-JV /Nggunakake Java Arrays.sort () ing sembarang dhaptar obye...

Nggunakake Java Arrays.sort () ing sembarang dhaptar obyek

Diterbitake ing grup
Ngurutake bisa dadi angel, utamane yen dhaptar sampeyan Listngemot bungkus obyek ( Byte, Integer, Short, Long, Double, Float) tinimbang jinis data numerik primitif. Aku nyaranake nggunakake cara sing bisa migunani banget kanggo ngrampungake masalah sing prasaja utawa mangsuli pitakon pewawancara. Nggunakake Java Arrays.sort () ing sembarang dhaptar obyek - 1Pisanan, ayo milih apa sing bakal diisi List. Ing conto iki, aku bakal nggunakake dhaptar pinggiran grafik ( Edges) saka struktur data sing prasaja 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 iku grafik?

Ing matématika diskrèt, grafik ditetepake minangka pasangan himpunan ( V, E), ing ngendi Vsubset saka himpunan sing bisa diétung arbitrer, lan Eminangka subset ( VхV).

Mbokmenawa, kanggo wong-wong sing ora biasa karo abstraksi matématika, definisi kasebut ora bakal cetha banget, supaya luwih gampang:

Grafik minangka kumpulan simpul lan pinggiran sing nyambungake. Conto apik saka grafik sing bakal langsung njupuk saka wilayah abstraksi menyang wilayah materi yaiku peta rel sepur.

Pucuk grafik kasebut minangka stasiun . Ya, dalan ing antarane yaiku pinggiran .

Banjur kita nemtokake implementasine 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;
    }
}
Ing conto iki, kita bakal ngurutake pinggiran grafik kanthi bobote, utawa kanthi jarak saka vertex src (sumber) menyang vertex dst (tujuan). Pungkasan, kita nggunakake metode standar java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
Saiki lembaran sing diisi obyek diurutake Edgeskanthi urutan munggah (saka sing paling cilik nganti paling gedhe). Penulis solusi kasebut yaiku Ethan Arrowood.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION