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