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
-khi Comparator tuyên bố được so sánh với đối tượng khác (argument)
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ằngsgn(comp1.compare(o1, o2))==sgn(comp2.compare(o1, o2))
cho mọi tham chiếu đối tượngo1
vào2
.
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ự.
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.
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.
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.
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")
- 1. Tại sao có thể gọi phương thức trên phương thức giao diện Java? [So sánh]
- 2. Giao diện Java mở rộng So sánh
- 3. So sánh: phương pháp giao diện so với phương pháp ảo so với phương pháp trừu tượng
- 4. Chuỗi so sánh: toán tử ==() vs Equals()
- 5. Bộ đệm giao thức Google so sánh
- 6. Phương thức khởi tạo trong giao diện
- 7. Truyền bằng phương thức equals
- 8. Tôi có cần phương thức equals và Hashcode không nếu lớp của tôi thực hiện so sánh được trong Java?
- 9. Bằng phương pháp trong giao diện
- 10. Câu lệnh switch của Java 7 có sử dụng phương thức equals() bằng String không?
- 11. Tìm tất cả việc sử dụng phương thức (bao gồm giao diện) sử dụng NDepend
- 12. Phương thức giao diện Java Phương pháp: Mỗi lớp có thực hiện một giao diện không?
- 13. Giao diện có phương thức toString không?
- 14. Sử dụng Singleton trong giao diện Builder?
- 15. Việc sử dụng phương thức ConvertBack trong giao diện IValueConverter là gì?
- 16. Thay đổi giao diện SOAP và sử dụng các phương thức web trong java
- 17. Sử dụng các phương thức trợ giúp như html_escape trong giao diện điều khiển đường ray
- 18. thực hiện giao diện với phương thức riêng trong vb.net
- 19. StarUML định nghĩa các phương thức và thuộc tính giao diện trong biểu tượng giao diện?
- 20. Cách sử dụng giao diện Comparator
- 21. Sử dụng Java Generics trong giao diện
- 22. Bắt buộc một lớp học ghi đè phương thức .equals
- 23. Cách tạo phương thức equals() và hashcode() bằng cách sử dụng wsimport trong jaxws
- 24. Sử dụng phương thức equals() với String và Object trong Java
- 25. Sự khác nhau giữa toán tử == và phương thức Equals() trong C#?
- 26. Giao diện và các phương thức không đồng bộ
- 27. Tôi có thể sử dụng @PostConstruct trên phương thức giao diện không?
- 28. Strongly-typed giao diện phương pháp sử dụng yield return
- 29. Rails giao diện điều khiển - sử dụng IMAGE_TAG phương pháp
- 30. Chú thích Spring @Async trên các phương thức giao diện