JavaRush /Java blogi /Random-UZ /Har qanday ob'ektlar ro'yxatida Java Arrays.sort() dan fo...

Har qanday ob'ektlar ro'yxatida Java Arrays.sort() dan foydalanish

Guruhda nashr etilgan
Saralash qiyin bo'lishi mumkin, ayniqsa sizning ro'yxatingizda ibtidoiy sonli ma'lumotlar turlaridan ko'ra Listob'ektlarni o'rash ( Byte, Integer, Short, Long, Double, ) bo'lsa. FloatMen oddiy muammolarni hal qilish yoki suhbatdoshning savoliga javob berish uchun juda foydali bo'lishi mumkin bo'lgan usuldan foydalanishni taklif qilaman. Har qanday ob'ektlar ro'yxatida Java Arrays.sort() dan foydalanish - 1Birinchidan, biz nimani to'ldirishimizni tanlaymiz List. EdgesUshbu misolda men oddiy ma'lumotlar strukturasidan grafik qirralari () ro'yxatidan foydalanaman 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();

Grafik nima?

VDiskret matematikada grafik juft to‘plamlar ( , E) sifatida aniqlanadi , bu yerda Vixtiyoriy sanaladigan to‘plamning kichik to‘plami va Ekichik to‘plam ( VхV).

Ehtimol, matematik abstraktsiyalarga o'rganmaganlar uchun bunday ta'rif unchalik aniq bo'lmaydi, shuning uchun oddiyroq aytaylik:

Grafik - bu ularni bog'laydigan cho'qqilar va qirralarning yig'indisidir. Grafikning yaxshi namunasi, uni darhol mavhumlik sohasidan material sohasiga olib boradigan temir yo'llar xaritasi.

Bunday grafikning uchlari stantsiyalardir . Xo'sh, ular orasidagi yo'llar qirralardir .

Keyin interfeysni amalga oshirishni aniqlaymiz 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;
    }
}
Ushbu misolda biz grafik qirralarini og'irligi bo'yicha yoki src cho'qqisidan (manba) dst cho'qqigacha bo'lgan masofa (maqsad) bo'yicha tartiblaymiz. Nihoyat, biz standart usuldan foydalanamiz java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
Endi ob'ektlar bilan to'ldirilgan varaqimiz Edgeso'sish tartibida (eng kichikdan kattagacha) tartiblangan. Yechim muallifi Ethan Arrowood.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION