Quelle est la différence entre une collection ordonnée et une collection triée?

132

Y a-t-il une différence entre une collection triée et une collection ordonnée ?

Johanna
la source
1
Ne prenez pas les réponses ici trop littéralement. Bien que ce soit le genre de définition largement compris et reconnu, ce n'est pas la définition de facto dans la terminologie informatique. Pour exemple, dans l'interface .NET pour « triée » dénombrable est appelé IOrderedEnumerable (chose drôle est son pas très cohérent dans .NET. Un « ordre d'insertion » dictionnaire respectin dans .NET est appelé OrderedDictionaryque certains croient est un abus de langage par rapport à dire, IndexedDictionary) . Oui dans le monde Java (surtout ailleurs aussi), ils signifient ce que vous avez dans les réponses. Pour en savoir plus, cliquez ici .
nawfal
Si une instance d'implémentation a une mauvaise dénomination, ce n'est pas une raison pour propager son erreur. C'est une bonne question, avec de bonnes réponses. Utilisez une dénomination appropriée - aide à réduire la confusion pour tout le monde, y compris vous-même.
foo

Réponses:

166

Une collection ordonnée signifie que les éléments de la collection ont un ordre spécifique. La commande est indépendante de la valeur. Une liste est un exemple.

Une collection triée signifie que non seulement la collection a de l'ordre, mais que l'ordre dépend de la valeur de l'élément. Un SortedSet est un exemple.

En revanche, une collection sans aucun ordre peut maintenir les éléments dans n'importe quel ordre. Un ensemble est un exemple.

g .
la source
1
La file d'attente prioritaire est-elle une collection ordonnée?
surexchange
@overexchange Compte tenu des définitions ci-dessus, une file d'attente prioritaire serait une collection triée dans la plupart des cas, puisque la priorité est presque toujours définie comme une propriété des éléments de la file d'attente.
cdeszaq
Si SortedSet a hérité de Set et entretient une relation is-a avec lui, comment pouvez-vous dire que Set est sans aucun ordre
XPioneer
79

Une collection ordonnée maintient l'ordre des éléments en fonction de la séquence dans laquelle vous placez des éléments / supprimez-les de la collection.

Une collection triée conserve les éléments triés en fonction d'un critère de tri.

nos
la source
18

Java utilise «collection ordonnée» pour désigner une collection telle que List, où (contrairement à HashSet), la collection se souvient dans quel ordre les éléments sont censés être. Ainsi, les éléments peuvent être ajoutés à la collection à un «endroit» particulier dans l'ordre .

Java utilise «collection triée» pour désigner une collection telle que SortedSet, où (contrairement à List), l'ordre dans lequel l'itérateur traverse la collection est conforme à un comparateur spécifié ou à l'ordre naturel des éléments.

Donc, la différence est de savoir si l'ordre dépend des valeurs ("trié") ou est une propriété que les éléments ont indépendamment de leur valeur ("ordonné").

Steve Jessop
la source
1
Bonne réponse et +1 pour mentionner "Java". C'est un peu la définition acceptée dans la plupart des endroits aussi, comme OrderedDicten python. Mais dans .NET, l'interface pour les énumérables "triés" est appelée IOrderedEnumerable. Cela dépend donc. Juste en disant ..
nawfal
9

Oui, bien que les concepts soient similaires.

List est une collection ordonnée: chaque élément a un index, qui forme un ordre des éléments, mais qui n'est généralement lié à aucune propriété des éléments eux-mêmes.

SortedMapet SortedSetsont des collections triées, ce qui signifie que l'itération dans la collection se produira dans une séquence dérivée des éléments eux-mêmes. Par exemple, si vous avez un, SortedSet<String>les chaînes seront triées selon l'ordre de tri lexicographique.

Une Collection ordonnée peut être triée mais n'a pas à l'être (par exemple après utilisation Collections.sort()) lorsque l'ordre externe est identique à l'ordre de tri des éléments. Une collection triée est toujours implicitement ordonnée (c'est-à-dire qu'il y a toujours un "premier" élément, et c'est toujours le même tant que vous n'en ajoutez pas un autre, plus petit).

Michael Borgwardt
la source
5

Une collection ordonnée est une collection qui garde la trace d'un index consécutif dans lequel chaque élément est inséré.

Une collection triée est une collection ordonnée lorsque l'ordre dépend en outre de la valeur de l'élément à insérer, tout au long de l'utilisation de l'interface Comparable qui vous fournit une méthode pour définir les critères de tri.

J'espère que cela pourrait aider.

Gvalenncia
la source
2

Trié impliquerait un classement selon une implémentation de Comparable ou Comparator. Ordonné impliquerait qu'il suit l'ordre d'insertion ou une autre définition d'ordre cohérente et définie, mais autrement arbitraire.

Ainsi, une liste triée de chaînes serait triée selon la méthode String.compareTo. Une liste peut contenir une liste de chaînes insérées dans un ordre arbitraire, mais cet ordre restera toujours le même.

Bien sûr, il existe des méthodes dans la classe Collections pour trier une liste.

Yishai
la source
1

Une collection triée signifie généralement que les éléments sont triés de la valeur minimun à la valeur maxinum ou vice versa en fonction du ou des attributs des éléments sur lesquels les algorithmes fonctionnent.

pour une collection entière, le tri peut être du nombre minimum au nombre maximum pour une collection personne, il peut être altéré par la taille des personnes ou le poids des personnes, etc.

Quand on parle d'ordre, cela signifie généralement l'ordre d'insertion. L'ordre peut être modifié après le tri

sotondolphin
la source
0

Collection triée vs collection ordonnée

1. Collection triée

Une collection triée trie une collection en utilisant les fonctionnalités de tri fournies par le framework de collections Java. Le tri se produit dans la mémoire de la JVM qui exécute Hibernate, après la lecture des données depuis la base de données à l'aide du comparateur java.

Si votre collection n'est pas volumineuse, ce sera un moyen plus efficace de la trier. Comme cela se produit dans la mémoire jvm, cela peut générer une erreur de mémoire insuffisante.

2. Collecte des commandes

Order collection trie une collection en spécifiant la clause order-by dans la requête pour trier cette collection lors de la récupération. Si votre collection est très volumineuse, ce sera un moyen plus efficace de la trier. C'est rapide par rapport à la collecte triée.

Hardikhirapara
la source