Nous avons TreeSet, TreeMap mais pas TreeList dans la collection Java. Pourquoi?


Meilleure réponse

Pensez aux différences entre une liste, une carte et un ensemble.

Une carte est une structure qui vous permet de rechercher des choses à laide dune clé. Lorsque vous concevez des recherches, vous vous rendez compte quil existe de nombreuses comparaisons clés et que les recherches doivent être rapides. Une arborescence accélère le processus de comparaison clé en organisant les clés dans des branches. Cela réduit le nombre de comparaisons clés qui doivent être créés.

Dans un ensemble, il ny a pas déléments en double. Ainsi, chaque fois que vous ajoutez un élément, vous devez le comparer aux éléments existants pour voir sil sagit dun double. Maintenant, vous êtes de retour au même problème que la carte, vous utilisez donc un arbre pour organiser vos éléments afin de réduire les comparaisons.

Une liste a juste un ordre, donc une liste peut être facilement conçue de telle sorte quelle ne le fasse pas.  » t nécessitent des comparaisons pour obtenir lélément suivant (ou éventuellement précédent) dans lordre de la liste.

Ainsi, même si un arbre peut vous aider à créer une meilleure carte ou un meilleur ensemble, il ne peut pas vraiment vous aider à créer une meilleure liste .

Si vous parlez dune liste triée , où les éléments sont insérés dans la liste dans lordre de tri, vous êtes maintenant de retour aux comparaisons pour le tri afin que lArbre puisse aider à faire une liste triée.

Réponse

Eh bien, une liste est une liste ordonnée collection – ce qui signifie que vous devez avoir la possibilité daccéder de manière aléatoire au ième élément. Si la collection mélange les éléments en interne, lordre dinsertion ne sera pas le même que lordre des éléments dans la structure de données interne. Vous ne pouvez donc plus compter sur un accès basé sur un index. Par conséquent, Sun na pas fourni de classe SortedList ou TreeList. Vous pouvez réaliser la même chose en utilisant Collections.sort (..)

Apache commons-collections fournit une classe TreeList ( TreeList (Commons Collections 3.2.1 API) ) mais ce nest pas une liste triée et est appelée ainsi car elle utilise une structure de données arborescente pour stocker les éléments en interne

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *