01/10/2018, 12:06
Hỏi về Hàm equals trong java
public boolean equals(Object obj) {
return ( obj instanceof Person) ? (((Person)obj).getId() == this.id) : false;
}
Hàm equals em override để trong class PerSon .
//////////////////////
Set<Person> set = new LinkedHashSet<Person>();
set.add(new Person(3));
set.add(new Person(2));
set.add(new Person(1));
set.add(new Person(1));
set.remove(new Person(1));
Mặc dù ko dùng equal so sánh nhưng tại sao phần set.remove(new Person(1)) vẫn có thể hiểu đc new Person(1) bằng với set.add(new Person(1)) ở trên ạ . Em cảm ơn
Bài liên quan
Ý bạn là vẫn remove được à? Nếu là vậy thì mình trả lời là không được nhé. Cơ chế so sánh sự bằng nhau của 2 đối tượng trong Set là dùng hàm equals và hashCode, ở đây bạn mới chỉ implement equals nên không thể xóa được.
Em đang học java cũng găp vấn đề này Chị thảo Ly đã có câu trả lời nào chính xác không ạ nếu có, có thể chỉ lại em được không
Bạn xem các bài bên dưới sẽ hiểu rõ hơn:
LinkedHashSet trong Java hoạt động như thế nào?
GP Coder – 19 Nov 17
LinkedHashSet trong Java hoạt động như thế nào? - GP Coder (Lập trình Java)
Hướng dẫn lập trình Java, Design Pattern, Spring, JSF, Primefaces, Collection, Multi-thread, Webservice, SQL, Report, Apache POI.
HashMap trong Java hoạt động như thế nào?
GP Coder – 17 Nov 17
HashMap trong Java hoạt động như thế nào? - GP Coder (Lập trình Java)
Hướng dẫn lập trình Java, Design Pattern, Spring, JSF, Primefaces, Collection, Multi-thread, Webservice, SQL, Report, Apache POI.