JavaRush /Blog Java /Random-VI /Sử dụng Java Arrays.sort() trên bất kỳ danh sách đối tượn...

Sử dụng Java Arrays.sort() trên bất kỳ danh sách đối tượng nào

Xuất bản trong nhóm
Việc sắp xếp có thể phức tạp, đặc biệt nếu danh sách của bạn Listchứa các hàm bao đối tượng ( Byte, Integer, Short, Long, Double) Floatthay vì các kiểu dữ liệu số nguyên thủy. Tôi khuyên bạn nên sử dụng một phương pháp có thể rất hữu ích để giải quyết các vấn đề đơn giản hoặc trả lời câu hỏi của người phỏng vấn. Sử dụng Java Arrays.sort() trên bất kỳ danh sách đối tượng nào - 1Đầu tiên, hãy chọn những gì chúng ta sẽ điền vào List. Trong ví dụ này, tôi sẽ sử dụng danh sách các cạnh của biểu đồ ( Edges) từ cấu trúc dữ liệu đơn giản 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();

Biểu đồ là gì?

Trong toán học rời rạc, đồ thị được định nghĩa là một cặp tập hợp ( V, E), trong đó Vlà tập hợp con của một tập hợp đếm được tùy ý và Elà tập hợp con ( VхV).

Có lẽ, đối với những người không quen với sự trừu tượng toán học, định nghĩa như vậy sẽ không rõ ràng lắm, vì vậy hãy nói đơn giản hơn:

Đồ thị là tập hợp các đỉnh và cạnh nối chúng lại với nhau. Một ví dụ điển hình về đồ thị sẽ đưa nó ngay lập tức từ lĩnh vực trừu tượng sang lĩnh vực vật liệu là bản đồ đường ray xe lửa.

Các đỉnh của đồ thị như vậy là các trạm . Vâng, các đường dẫn giữa chúng là các cạnh .

Sau đó, chúng tôi xác định việc thực hiện giao diện 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;
    }
}
Trong ví dụ này, chúng ta sẽ sắp xếp các cạnh của biểu đồ theo trọng số của chúng hoặc theo khoảng cách từ đỉnh src (nguồn) đến đỉnh dst (đích). Cuối cùng, chúng tôi sử dụng phương pháp tiêu chuẩn java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
Bây giờ trang tính chứa đầy các đối tượng của chúng tôi Edgesđược sắp xếp theo thứ tự tăng dần (từ nhỏ nhất đến lớn nhất). Tác giả của giải pháp là Ethan Arrowood.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION