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

Vesper Link viết 14:11 ngày 01/10/2018

Ý 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.

Nguyễn Lân viết 14:09 ngày 01/10/2018

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

Giang Phan viết 14:14 ngày 01/10/2018

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.

Bài liên quan
0