JavaRush /وبلاگ جاوا /Random-FA /استفاده از Java Arrays.sort() در هر لیستی از اشیا

استفاده از Java Arrays.sort() در هر لیستی از اشیا

در گروه منتشر شد
مرتب‌سازی می‌تواند دشوار باشد، به‌ویژه اگر لیست شما حاوی بسته‌بندی‌های شی (،،،،،،، ) به Listجای Byteانواع داده‌های عددی اولیه باشد. من پیشنهاد می کنم از روشی استفاده کنید که می تواند برای حل مسائل ساده یا پاسخ به سوال مصاحبه کننده بسیار مفید باشد. اول، بیایید انتخاب کنیم که چه چیزی را پر کنیم . در این مثال من از لیستی از لبه های گراف ( ) از یک ساختار داده ساده استفاده خواهم کرد : IntegerShortLongDoubleFloatاستفاده از Java Arrays.sort() در هر لیستی از اشیا - 1ListEdgesGraph
// Очень простой класс 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به ترتیب صعودی (از کوچکترین به بزرگ) مرتب شده است. نویسنده راه حل Ethan Arrowood است.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION