JavaRush /Java блогы /Random-KK /Кез келген нысандар тізімінде Java Arrays.sort() пайдалан...

Кез келген нысандар тізімінде Java Arrays.sort() пайдалану

Топта жарияланған
Сұрыптау қиын болуы мүмкін, әсіресе тізімде қарабайыр сандық деректер түрлерінен гөрі Listнысан орауыштары ( Byte, Integer, Short, Long, Double, ) болса. FloatМен қарапайым мәселелерді шешу немесе сұхбат берушінің сұрағына жауап беру үшін өте пайдалы әдісті пайдалануды ұсынамын. Кез келген нысандар тізімінде Java Arrays.sort() пайдалану - 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())
Енді нысандармен толтырылған парағымыз Edgesөсу ретімен (кішіден үлкенге қарай) сұрыпталған. Шешімнің авторы - Этан Арровуд.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION