Un Jeu Java conserver l'ordre? Une méthode est de retour d'un Jeu pour moi et soi-disant les données est ordonné, mais une itération sur l'Ensemble, les données n'est pas ordonné. Est-il une meilleure façon de gérer cela? La méthode devra être modifié pour revenir à quelque chose d'autres qu'un Ensemble?
Réponses
Trop de publicités?L' Set
interface n'offre aucune des garanties de classement.
Il est sous-interface, SortedSet
, représente un ensemble qui est triée en fonction de certains critères. Dans la version 6 de Java, il y a deux conteneurs standard qui implémentent SortedSet
. Ils sont TreeSet
et ConcurrentSkipListSet
.
En plus de l' SortedSet
interface, il y a aussi l' LinkedHashSet
classe. Il se souvient de l'ordre dans lequel les éléments ont été insérés dans le jeu et retourne à ses éléments dans l'ordre.
Comme beaucoup de membres ont suggéré d'utiliser LinkedHashSet de conserver l'ordre de la collection. U peut envelopper votre jeu à l'aide de cette mise en œuvre.
SortedSet mise en œuvre peut être utilisé pour l'ordre de tri mais pour votre usage LinkedHashSet.
Également de la documentation,
"Cette mise en œuvre de pièces de rechange de ses clients de l'une quelconque, généralement chaotique de commande fourni par HashSet, sans encourir de l'augmentation des coûts associés à TreeSet. Il peut être utilisé pour la production d'une copie d'un jeu qui a le même ordre que l'original, quelle que soit l'origine de l'ensemble de la mise en œuvre:"
Source : http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html
À partir de la javadoc pour Set.iterator()
:
Retourne un itérateur sur les éléments de cet ensemble. Les éléments sont retournés dans aucun ordre particulier (à moins que cet ensemble est une instance d'une classe qui fournit une garantie).
Et, comme déjà indiqué par shuuchan, un TreeSet
est une mise en œuvre de l' Set
qui a une garantie de l'ordre:
Les éléments sont classés à l'aide de leur ordre naturel, ou par un Comparateur fourni à définir l'heure de création, selon le constructeur est utilisé.