web-dev-qa-db-fra.com

Java: liste contenant des éléments uniques dans l'ordre

Existe-t-il un type de liste en Java qui stocke les objets dans un ordre croissant et ne s’ajoute pas si cet objet a déjà été ajouté? Je sais que les cartes Java peuvent le faire, mais je me demande s’il existe un type de liste qui fait ce que je veux. Sinon, je dois redéfinir contient, equalsTo et ajouter des méthodes, non?

20
meandbobbymcgee

Vous avez donc besoin d’une liste ne contenant que des éléments uniques? Deux options:

  • Java.util.LinkedHashSet - conserve l'ordre d'insertion, a la sémantique définie
  • from commons-collections SetUniquieList - autorise les opérations sur les listes telles que get(..) et set(..)
  • de commons-collections ListOrderedSet
38
Bozho

Cela dépend de quel ordre tu veux dire.

14
mishadoff

TreeSet fera l'affaire. Exemple :

SortedSet<Integer> myOrderedUniqueList = new TreeSet<Integer>()

4
solendil

Je pense que vous recherchez un SortedSet (c'est une interface qui étend Set). Set est comme une liste mais il ne contient qu'une seule de chaque valeur.

TreeSet est une implémentation couramment utilisée de SortedSet.

http://download.Oracle.com/javase/6/docs/api/Java/util/TreeSet.html

4
laher

TreeSet pourrait être exactement ce dont vous avez besoin.

Il stocke les éléments dans un arbre trié. Vous pouvez donc les parcourir par ordre de tri. Ce n'est pas une liste, mais sa performance est meilleure en ce qui concerne l'ajout et le contenu.

1
Petar Ivanov

SortedSet est une sous-interface de Set, qui garantit que les éléments de l'ensemble sont triés. 

SortedSet<Integer> orderedSet = new TreeSet<Integer>();

Utilisez-les lorsque vous devez stocker des éléments non dupliqués dans l'ordre croissant des valeurs d'élément

0
devDeejay

Ce n'est pas une liste, mais vous pouvez regarder les implémentations de Set http://download.Oracle.com/javase/6/docs/api/Java/util/Set.html

0
Rhand

Utilisez Java.util.LinkedHashSet avec hashCode () et equals (Object obj) remplacés à l'aide de la ou des propriétés uniques.

0
fjkjava