Có sự khác nhau thực tế nào giữa Set
và Collection
trong Java, ngoài thực tế là Collection
có thể bao gồm cùng một yếu tố hai lần không? Họ có cùng phương pháp.khi nào sử dụng Set vs. Collection?
(Ví dụ, không Set
cho tôi thêm nhiều lựa chọn để sử dụng thư viện mà chấp nhận Set
s nhưng không Collection
s?)
chỉnh sửa: tôi có thể nghĩ ra ít nhất 5 tình huống khác nhau để đánh giá câu hỏi này. Có ai khác có thể tìm hiểu thêm? Tôi muốn chắc chắn rằng tôi hiểu sự tinh tế ở đây.
- thiết kế phương pháp chấp nhận đối số
Set
hoặcCollection
.Collection
là tổng quát hơn và chấp nhận nhiều khả năng đầu vào hơn. (nếu tôi thiết kế một lớp hoặc giao diện cụ thể, tôi sẽ trở nên đẹp hơn đối với người tiêu dùng và nghiêm ngặt hơn đối với người dùng/người triển khai của tôi nếu tôi sử dụngCollection
.) - thiết kế phương thức trả về
Set
hoặcCollection
.Set
đảm bảo nhiều hơnCollection
(ngay cả khi đó chỉ là bảo đảm không bao gồm một phần tử hai lần). (nếu tôi đang thiết kế một lớp hoặc giao diện cụ thể, tôi sẽ trở nên đẹp hơn đối với người tiêu dùng và nghiêm ngặt hơn đối với người dùng/người triển khai của tôi nếu tôi sử dụngSet
.) - thiết kế một lớp thực hiện giao diện
Set
hoặcCollection
. Các vấn đề tương tự như số 2. Người dùng của lớp/giao diện của tôi nhận được nhiều sự bảo đảm hơn, các nhà phân lớp/người triển khai thực hiện có nhiều trách nhiệm hơn. - thiết kế giao diện mở rộng giao diện
Set
hoặcCollection
. Rất giống với # 3. - mã viết sử dụng số
Set
hoặcCollection
. Ở đây tôi cũng có thể sử dụngSet
; lý do duy nhất để tôi sử dụngCollection
là nếu tôi lấy lại một sốCollection
từ mã của người khác hoặc nếu tôi phải xử lý một bộ sưu tập có chứa các bản sao.
câu hỏi hay nhưng câu trả lời không tốt cho người nghèo – Kemoda