JavaRush /Java Blogu /Random-AZ /İstənilən obyekt siyahısında Java Arrays.sort() funksiyas...

İstənilən obyekt siyahısında Java Arrays.sort() funksiyasından istifadə

Qrupda dərc edilmişdir
Xüsusilə siyahınızda ibtidai rəqəmsal məlumat növləri deyil, Listobyekt sarğıları ( Byte, Integer, Short, Long, Double, ) varsa, çeşidləmə çətin ola bilər. FloatSadə problemlərin həlli və ya müsahibə verənin sualına cavab vermək üçün çox faydalı ola biləcək bir üsuldan istifadə etməyi təklif edirəm. İstənilən obyekt siyahısında Java Arrays.sort()-dan istifadə - 1Əvvəlcə nə dolduracağımızı seçək List. EdgesBu nümunədə mən sadə verilənlər strukturundan qrafik kənarlarının ( ) siyahısını istifadə edəcəyəm 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();

Qrafik nədir?

Diskret riyaziyyatda qrafik bir cüt çoxluq ( V, E) kimi müəyyən edilir, burada Vixtiyari sayıla bilən çoxluğun alt çoxluğudur və Ealt çoxluqdur ( VхV).

Yəqin ki, riyazi abstraksiyalara öyrəşməyənlər üçün belə bir tərif çox aydın olmayacaq, ona görə də daha sadə deyək:

Qrafik onları birləşdirən təpələrin və kənarların məcmusudur. Onu dərhal abstraksiya sahəsindən material sahəsinə aparacaq qrafikin yaxşı nümunəsi dəmir yolu relslərinin xəritəsidir.

Belə bir qrafikin təpələri stansiyalardır . Yaxşı, aralarındakı yollar kənarlardır .

Sonra interfeysin həyata keçirilməsini müəyyənləşdiririk 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;
    }
}
Bu misalda biz qrafikin kənarlarını çəkilərinə görə və ya src təpəsindən (mənbə) dst təpəsinə (təyinat) qədər olan məsafəyə görə çeşidləyəcəyik. Nəhayət, standart metoddan istifadə edirik java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
İndi obyektlərlə dolu vərəqimiz Edgesartan qaydada (kiçikdən böyüyə) sıralanır. Həllin müəllifi Ethan Arrowooddur.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION