2012-02-29 47 views
11

equals() phương thức có sẵn cho tất cả các lớp thu thập java từ lớp Object. Phương thức này cũng được khai báo trong giao diện Comparator, vì vậy mục đích khai báo phương thức này trong Comparator là gì? trong trường hợp nào nó được sử dụng và làm thế nào?sử dụng phương thức equals() trong giao diện so sánh?

Trả lời

0

-khi Comparator tuyên bố được so sánh với đối tượng khác (argument)

10

mục đích của tuyên bố phương pháp này trong Comparator là gì?

Tôi nghĩ rằng đó là cách của nhà thiết kế làm nổi bật thực tế rằng Comparator.equals() áp đặt một số additional requirements trên bất kỳ lớp học mà thực hiện giao diện:

Bên cạnh đó, phương pháp này có thể trở lại true chỉ khi đối tượng quy định cũng là một là so sánh và nó áp đặt cùng thứ tự như bộ so sánh này. Do đó, comp1.equals(comp2) ngụ ý rằng sgn(comp1.compare(o1, o2))==sgn(comp2.compare(o1, o2)) cho mọi tham chiếu đối tượng o1o2.

Phương pháp này có thể được sử dụng để xác định có hay không hai trình so sánh riêng biệt áp đặt cùng một thứ tự.

4

Từ javadoc

Lưu ý rằng nó là luôn an toàn không để ghi đè Object.equals (Object). Tuy nhiên, việc ghi đè phương pháp này có thể, trong một số trường hợp, cải thiện hiệu suất bằng cách cho phép các chương trình xác định hai đơn vị so sánh riêng biệt áp đặt cùng một thứ tự.

Ý tưởng chỉ đơn giản là có thể cho phép bạn không sắp xếp bộ sưu tập đã được sắp xếp bởi một bộ so sánh khác nếu bạn nhận ra rằng kết quả cuối cùng sẽ giống nhau.

Nói chung nó có ít sử dụng, nhưng khi phân loại các bộ sưu tập rất lớn, đó là điều bạn có thể muốn xem xét.

0

Nó chỉ là một dạng nằm ngang của phương pháp equals của đối tượng để cho bạn biết nếu hai đối tượng có cùng một loại so sánh.

5

Tôi nghĩ rằng lý do chính là làm rõ rằng phương pháp equals là để thử nghiệm Comparator chính nó. Điều này là hiển nhiên khi bạn nghĩ về nó, nhưng tôi có thể tưởng tượng rằng một số người có thể mong đợi equals(Object) đến (bằng cách nào đó) có ngữ nghĩa liên quan đến phương pháp compare(T, T).

Nó cũng cho phép tài liệu về một số nguyên tắc thông thường khi hai trình so sánh có thể được xem như nhau.

Dù bằng cách nào, sự hiện diện của phương pháp equals(Object) trong giao diện là chỉ cho mục đích tài liệu.

-2

Theo câu hỏi của bạn, tôi nghĩ Nó được sử dụng để so sánh các đối tượng sau khi chuyển đổi thành chuỗi. Lớp đối tượng phương pháp eqlas chek cả đối tượng là eqls hay không Và đối tượng phương pháp chek dữ liệu đối tượng như Hello.eqlas ("hello")

Các vấn đề liên quan