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

2 Likes

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?

HashMap trong Java hoạt động như thế nào?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?