TreeSet constructeur Comparateur de<?> paramètre
En Java de la documentation de sa classe TreeSet l'un des constructeurs est montré pour avoir l'en-tête suivant:
TreeSet(Comparator<? super E> c)
Quelqu'un peut aider à expliquer pourquoi il y a un constructeur pour TreeSet qui prend un comparateur objet comme argument? Je n'ai aucune idée de pourquoi c'est fait.
OriginalL'auteur TheRapture87 | 2015-04-17
Vous devez vous connecter pour publier un commentaire.
Les éléments dans un TreeSet sont triées.
Si vous utilisez un constructeur qui n'a pas de traitement de référence, l'ordre naturel de l'élément classe (définie par la mise en œuvre de
Comparable
) serait utilisé pour trier les éléments de la TreeSet.Si vous souhaitez une autre commande, vous fournir une base de Comparaison dans le constructeur.
OriginalL'auteur Eran
Ce constructeur permet de définir la
Comparator
qui est utilisé lors de l'insertion d'unT
dans l'arbre qui est derrière leSet
.OriginalL'auteur
Toutes les réponses ci-dessus sont correctes, mais j'aimerais ajouter que c'est une coutume de Comparaison, la part donnant lieu à un nouveau tri, sera également de filtrer les valeurs différemment.
Depuis l'Ensemble de valeurs sont univoques, si la coutume de Comparaison renvoie que les deux valeurs sont identiques, un seul d'entre eux apparaissent dans le Jeu:
OriginalL'auteur Giovanni P.
Un
TreeSet
est un un arbre de recherche binaire, qui est basée sur la notion que, compte tenu de deux éléments un et b, c'est le cas que un est "plus petit que" b, ou pas. Cependant, si vous définissez votre propre classe, laTreeSet
ne sais pas comment faire pour déterminer si un objet de cette classe est "plus petit que" un autre objet, car il ne peut pas savoir votre interprétation des objets contenus. Par conséquent, vous pouvez créer unComparator
qui peut faire les comparaisons au nom de laTreeSet
.OriginalL'auteur Aasmund Eldhuset
OriginalL'auteur venkatesh.khandare
Il est utilisé pour trier les éléments de l'Ensemble selon les règles définies par l'utilisateur.
Voir le javadoc:
Voir ici pour plus d'informations sur les objets naturels de la commande.
OriginalL'auteur Umberto Raimondi
Treeset classe a le ci-dessous constructeur de sorte que Treeset magasins de l'élément à l'aide de la commande, comme décrit par le Comparateur c.Ci-dessous est un exemple pour illustrer le même.
Ici si vous voyez le namecomp est la mise en œuvre de la Comparaison de l'interface et donc de trier les éléments de la Employeee classe dans l'ordre décroissant sur la base du Nom de domaine.
Maintenant, le Treeset est la mise en œuvre de la namecomp comparateur de stocker l'élément dans l'ordre décroissant sur la base du Nom de domaine.
Sortie
2
1
3
Espère que cela répond à la question.
OriginalL'auteur iftekhar khan
Comparator interface is used to order the objects of user-defined class.
Il offre de multiples ordre de tri vous pouvez trier les éléments de la base de données des membres. Par exemple, il peut être sur rollno, le nom, l'âge ou quoi que ce soit d'autre.
Par le passage d'un Comparateur en
TreeSet(Comparator<? super E> c)
cela signifie que vous pouvez commander votre TreeSet basé sur le paramètre que vous désirez.Supposons que vous avez
TreeSet<User>
et vous avez un Utilisateur de la classe avec le champid
.Maintenant, si vous souhaitez trier vos TreeSet basé sur l'id Utilisateur, vous pouvez passer un Comparateur objet dans votre TreeSet pour obtenir le niveau désiré de la commande.
OriginalL'auteur Abhishek
TreeSet avec le constructeur par défaut sera régler l'élément naturel dans l'ordre croissant, mais si vous voulez un peu de tri personnalisée en fonction de vos besoins, alors vous devriez aller pour le Comparateur d'interface.
eq
C'est par défaut de la classe Employé et que vous souhaitez trier cette classe de salaire alors.
Ici, nous avons créé une autre classe par la mise en œuvre de Comparaison.
[ID : 1001 Name : Ram Salary : 1000 , ID : 1003 Name : sumo Salary : 3000 , ID : 1002 Name : lucky Salary : 7000 ]
c'est la sortie de code ci-dessus..je ne comprends pas pourquoi. peut-être parce que decompare
méthode renvoie0
en cas de salaire de même.OriginalL'auteur Vivek Kumar