JavaRush /Блоги Java /Random-TG /Истифодаи Java Arrays.sort() дар ҳама гуна рӯйхати объект...

Истифодаи Java Arrays.sort() дар ҳама гуна рӯйхати объектҳо

Дар гурӯҳ нашр шудааст
Ҷудобандӣ метавонад душвор бошад, хусусан агар рӯйхати шумо на аз намудҳои ибтидоии ададии додаҳо Listпечонидани an objectҳоро ( Byte, Integer, Short, Long, Double, ) дар бар гирад. FloatМан тавсия медиҳам, ки усуле истифода барад, ки метавонад барои ҳалли мушкилоти оддӣ ё ҷавоб додан ба саволи мусоҳиба хеле муфид бошад. Истифодаи Java Arrays.sort() дар ҳама гуна рӯйхати an objectҳо - 1Аввалан, биёед интихоб кунем, ки мо List. Дар ин мисол ман рӯйхати кунҷҳои графикиро ( Edges) аз сохтори оддии додаҳо истифода хоҳам кард 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();

Графика чист?

Дар математикаи дискретӣ график ҳамчун ҷуфти маҷмӯи ( V, E) муайян карда мешавад, ки дар он 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())
Ҳоло варақи пур аз an objectҳо Edgesбо тартиби афзоиш (аз хурдтарин ба калон) мураттаб карда мешавад. Муаллифи ҳалли ин масъала Этан Арровуд мебошад.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION