Я хочу прояснити тут деякі речі для оригінального плаката, на який інші натякали, але насправді прямо не заявили. Коли ви говорите, що хочете унікального списку, це саме визначення впорядкованого набору. Деякі інші ключові відмінності між інтерфейсом Set і інтерфейсом List полягають у тому, що Список дозволяє вказати індекс вставки. Отже, питання полягає в тому, чи справді вам потрібен інтерфейс списку (тобто для сумісності з сторонньою бібліотекою тощо), чи ви можете переробити програмне забезпечення для використання інтерфейсу Set? Ви також повинні врахувати, що ви робите з інтерфейсом. Чи важливо знайти елементи за їх індексом? Скільки елементів ви очікуєте у своєму наборі? Якщо у вас буде багато елементів, чи важливе замовлення?
Якщо вам справді потрібен Список, який просто має унікальне обмеження, є клас org.apache.commons.collections.list.SetUniqueList Apache Common Utils, який надасть вам інтерфейс списку та унікальне обмеження. Майте на увазі, це порушує інтерфейс List. Однак ви отримаєте кращу ефективність від цього, якщо вам буде потрібно шукати список за індексом. Якщо ви можете мати справу з інтерфейсом Set і у вас є менший набір даних, то LinkedHashSet може бути хорошим способом. Це просто залежить від дизайну та намірів вашого програмного забезпечення.
Знову ж таки, у кожної колекції є певні переваги та недоліки. Деякі швидкі вставки, але повільно зчитуються, деякі мають швидке зчитування, але повільні вставки та ін. Має сенс витратити досить багато часу на документацію про колекцію, щоб повністю дізнатися про більш точні деталі кожного класу та інтерфейсу.