Tôi muốn làm rõ một số điều ở đây cho người đăng ban đầu mà những người khác đã ám chỉ đến nhưng chưa thực sự nêu rõ ràng. Khi bạn nói rằng bạn muốn một Danh sách duy nhất, đó chính là định nghĩa của Tập hợp có Thứ tự. Một số điểm khác biệt chính giữa Giao diện Đặt và Giao diện Danh sách là Danh sách cho phép bạn chỉ định chỉ mục chèn. Vì vậy, câu hỏi đặt ra là bạn có thực sự cần Giao diện danh sách (tức là để tương thích với thư viện của bên thứ 3, v.v.) hay bạn có thể thiết kế lại phần mềm của mình để sử dụng giao diện Đặt không? Bạn cũng phải xem xét những gì bạn đang làm với giao diện. Việc tìm các phần tử theo chỉ số của chúng có quan trọng không? Bạn mong đợi có bao nhiêu phần tử trong tập hợp của mình? Nếu bạn sắp có nhiều yếu tố, việc đặt hàng có quan trọng không?
Nếu bạn thực sự cần một Danh sách chỉ có một ràng buộc duy nhất, có lớp Apache Common Utils org.apache.commons.collections.list.SetUniqueList sẽ cung cấp cho bạn giao diện Danh sách và ràng buộc duy nhất. Xin lưu ý bạn, điều này làm hỏng giao diện Danh sách. Tuy nhiên, bạn sẽ nhận được hiệu suất tốt hơn từ điều này nếu bạn cần tìm kiếm trong danh sách theo chỉ mục. Nếu bạn có thể xử lý giao diện Set và bạn có tập dữ liệu nhỏ hơn, thì LinkedHashSet có thể là một cách tốt để thực hiện. Nó chỉ phụ thuộc vào thiết kế và ý định của phần mềm của bạn.
Một lần nữa, có những ưu và nhược điểm nhất định đối với mỗi bộ sưu tập. Một số chèn nhanh nhưng đọc chậm, một số có đọc nhanh nhưng chèn chậm, v.v. Bạn nên dành một lượng thời gian hợp lý với tài liệu bộ sưu tập để tìm hiểu đầy đủ về các chi tiết tốt hơn của từng lớp và giao diện.