Em ko hiểu sao set nó lại lưu đc các đối tượng có giá trị trùng nhau ạ?
Cần giải thích đoạn code
Do bạn dùng HashSet
nên nó phải tính key, mà key mặc định là object ID.
vấn đề là “như thế nào là trùng nhau”
Thế mới có @Override equals
và @Override hashCode
.
Như mọi người đã chỉ ở trên, cậu cần override 2 method equals
(định nghĩa khi nào 2 object được coi là bằng nhau) và hashCode
(vì cậu dùng HashSet
, implement hàm này cho phép cậu phân bố và tìm kiếm các phần tử trong các bucket tốt nhất) cho class A.
Nhiều bạn bây giờ thích học kiểu ăn xổi nhưng không bao giờ chịu tự đặt câu hỏi để tư duy nhỉ.
Nếu là mình thì khi gặp vấn đề này thì sẽ lại thắc mắc bằng cách thần kỳ nào mà java biết được 2 object là giống hay khác nhau? Liệu có gì đó giúp java làm việc đó không? Nếu có cách thì đó là gì? Tại sao phải làm như thế? Tự tìm hiểu và trả lời mấy câu hỏi trên mà mình học được cách sử dụng đúng với các thư viện có sẵn, không những vậy còn giúp mình tự nghĩ ra phương án triển khai khi gặp các pattern tương tự. Thấy vì phụ thuộc thư viện thì mình tạo ra thư viện