Quiero aclarar algunas cosas aquí para el póster original a las que otros han aludido pero que no han dicho explícitamente. Cuando dices que quieres una lista única, esa es la definición misma de un conjunto ordenado. Algunas otras diferencias clave entre la interfaz de conjunto y la interfaz de lista son que la lista le permite especificar el índice de inserción. Entonces, la pregunta es ¿realmente necesita la interfaz de lista (es decir, para compatibilidad con una biblioteca de terceros, etc.), o puede rediseñar su software para usar la interfaz de configuración? También debe considerar lo que está haciendo con la interfaz. ¿Es importante buscar elementos por su índice? ¿Cuántos elementos esperas en tu set? Si vas a tener muchos elementos, ¿es importante realizar pedidos?
Si realmente necesita una Lista que solo tiene una restricción única, existe la clase de Apache Common Utils org.apache.commons.collections.list.SetUniqueList que le proporcionará la interfaz de Lista y la restricción única. Eso sí, esto rompe la interfaz de la lista. Sin embargo, obtendrá un mejor rendimiento si necesita buscar en la lista por índice. Si puede lidiar con la interfaz Set y tiene un conjunto de datos más pequeño, LinkedHashSet podría ser una buena opción. Solo depende del diseño y la intención de su software.
Nuevamente, existen ciertas ventajas y desventajas para cada colección. Algunas inserciones rápidas pero lecturas lentas, algunas tienen lecturas rápidas pero inserciones lentas, etc. Tiene sentido dedicar una buena cantidad de tiempo a la documentación de las colecciones para aprender completamente sobre los detalles más finos de cada clase e interfaz.