Je tiens à clarifier certaines choses pour l'affiche originale, auxquelles d'autres ont fait allusion mais qui n'ont pas vraiment été explicitées. Lorsque vous dites que vous voulez une liste unique, c'est la définition même d'un ensemble ordonné. D'autres différences importantes entre l'interface Set et l'interface List sont que List vous permet de spécifier l'index d'insertion. La question est donc de savoir si vous avez vraiment besoin de l'interface List (par exemple, pour des raisons de compatibilité avec une bibliothèque tierce, etc.) ou si vous pouvez concevoir votre logiciel de manière à utiliser l'interface Set. Vous devez également tenir compte de ce que vous faites avec l'interface. Est-il important de trouver des éléments par leur index ? Combien d'éléments pensez-vous avoir dans votre ensemble ? Si vous avez beaucoup d'éléments, est-il important de les ordonner ?
Si vous avez vraiment besoin d'une liste qui n'a qu'une contrainte unique, il existe la classe Apache Common Utils org.apache.commons.collections.list.SetUniqueList qui vous fournira l'interface List et la contrainte unique. Attention, cela casse l'interface de la liste. Vous obtiendrez cependant de meilleures performances si vous devez rechercher dans la liste par index. Si vous pouvez vous accommoder de l'interface Set et que vous disposez d'un ensemble de données plus petit, LinkedHashSet peut être une bonne solution. Tout dépend de la conception et de l'intention de votre logiciel.
Là encore, chaque collection présente des avantages et des inconvénients. Certaines ont des insertions rapides mais des lectures lentes, d'autres ont des lectures rapides mais des insertions lentes, etc. Il est judicieux de consacrer un certain temps à la documentation sur les collections afin d'apprendre les moindres détails de chaque classe et interface.