La raison pour laquelle la plupart des utilisations, HashSet
, c'est que les opérations sont (en moyenne) O(1) au lieu de O(log n). Si le jeu contient des éléments standard vous ne serez pas "déconner avec les fonctions de hachage", comme ce qui a été fait pour vous. Si l'ensemble contient des classes personnalisées, vous devez implémenter hashCode
utilisation HashSet
(bien qu'Efficace Java montre comment), mais si vous utilisez un TreeSet
que vous avez à faire c' Comparable
ou de fournir un Comparator
. Cela peut être un problème si la classe n'ont pas d'ordre particulier.
J'ai parfois utilisé TreeSet
(ou réellement TreeMap
) pour de très petites séries de cartes (< 10 éléments) bien que je n'ai pas vérifié pour voir si il n'y a aucun gain réel en agissant de la sorte. Pour les grands ensembles, la différence peut être considérable.
Maintenant, si vous avez besoin de la triés, TreeSet
est approprié, même si les mises à jour sont fréquentes et la nécessité pour un résultat trié est rare, parfois en copiant le contenu à une liste ou un tableau d'un classement peut être plus rapide.