cuốn sách gpt4 ai đã làm

android — Vấn đề về Trình so sánh/Có thể so sánh/Chuỗi so sánh

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 08:21:55 31 4
mua khóa gpt4 Nike

Tôi đang cố gắng triển khai một trình xử lý Bộ so sánhCó thể so sánh Hệ thống phân cấp của giao diện. Một số điều tôi chưa rõ:

  1. Chính xác thì mã này có ý nghĩa gì nếu tôi thêm bộ so sánh vào chuỗi bộ so sánh

    chain.addComparator(newsortByTitle());

    Tôi biết SortByTitle() Đối số phải là một bộ so sánh, nhưng tôi không hiểu cách bạn triển khai hàm như vậy? Bộ so sánh yêu cầu bạn thực hiện so sánh(obj1, obj2) hàm nhận hai đối số và so sánh một đối số với đối số kia, làm thế nào để bạn nhận được một lệnh gọi (trông giống hàm tạo) từ nó mà không có đối số?

  2. Giả sử tôi thực hiện một chức năng gọi là Database Một lớp lưu trữ một số mục trong một tệp có tên mục của ArrayList ở giữa. biến mục Bản thân nó là một biến riêng tư. Bây giờ trong chương trình chính, thực hiện lệnh gọi sau:

    Collections.sort(library.item, chain);

    Cách truy cập trực tiếp vào đối tượng thư viện của mục Ví dụ? Thông số cơ sở dữ liệu mục Cần phải riêng tư, điều này có hiệu quả không?

Tôi sẽ biết ơn sự giúp đỡ nào.

câu trả lời hay nhất

  • Bạn có thể biết,Bộ so sánh Bản thân nó là một giao diện. khi bạn nói chain.addComparator(newsortByTitle());, bạn đang chuyển một phiên bản triển khai Bộ so sánh để sắp xếp các đối tượng theo tiêu đề. sắp xếpByTitle lớp sẽ thực hiện trong trường hợp này Bộ so sánh và sẽ cung cấp so sánh(obj1, obj2) phương pháp. Chuỗi của bạn có thể gọi nó trong trường hợp bạn truy cập. Thông thường, thay vì chuyển một phiên bản mới mỗi lần, tất cả Bộ so sánh Đối tượng triển khai được khai báo là thành viên tĩnh công khai cuối cùng của chính đối tượng đó.

Ví dụ:

Công cụ so sánh cuối cùng tĩnh công khai TITLE_COMPARATOR = Bộ so sánh mới() {
@Ghi đè
so sánh int công khai(Object lhs, Object rhs) {
// logic so sánh
}
};

Sau đó, bạn có thể chỉ cần chuyển chúng vào chuỗi của mình theo cách này:

chain.addComparator(YourObject.TITLE_COMPARATOR);

Điều này có thêm lợi ích là cho phép sử dụng bộ so sánh (không trạng thái) ở nơi khác mà không cần tạo một phiên bản mới mỗi lần.

  • Bạn cần phải viết getters và setters (bộ truy cập và bộ sửa đổi, nếu bạn muốn) trong lớp Thư viện, điều này sẽ cho phép các lớp khác đọc/cập nhật biến mục ngay cả khi nó được khai báo là riêng tư.

类似于:

Danh sách công khai getItem() {
trả lại hàng;
}

public void setItem(Mục danh sách) {
this.item = mục;
}

trong lớp thư viện.

Về vấn đề java - Comparator/Comparable/ComparatorChain, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/11173477/

31 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress