2016-10-14 1 views
0

J'ai le problème suivant dans une application Java 6 J'essaie de fairePuis-je utiliser une classe Comparator pour commander une TreeMap dans Java 1.6?

QuotaTirComparator bvc = new QuotaTirComparator(mappaQuote); 
TreeMap<Integer, QuotaTir> sorted_map = new TreeMap<Integer, QuotaTir>(bvc); 

à obtenir une TreeMap triée.

Mais Eclipse me donne le message d'erreur suivant:

The constructor TreeMap<Integer,QuotaTir>(QuotaTirComparator) is undefined

Pourquoi? Cette fonctionnalité n'est-elle pas activée dans Java 6? Qu'est-ce qui ne va pas? Qu'est-ce que je rate?

+0

Dans votre TreeMap, le comparateur doit étendre le Comparateur et non le Comparateur . Notez que le constructeur de TreeMap est défini comme "TreeMap (Comparateur comparateur)" où le K est le type de clé. Une autre façon d'exprimer ceci est "Non, vous ne pouvez pas faire cela". – DwB

Répondre

3

Je suppose que QuotaTirComparator n'est pas un Comparator De toute évidence, le comparateur doit être pour les clés, pas les valeurs. Comme Integer a déjà un ordre naturel, je voudrais essayer de supprimer le comparateur tout à fait.

Un arbre est trié touches avec les valeurs associées. Si vous voulez trier le QuoteTir vous avez besoin d'un SortedSet d'entre eux.

Le constructeur qui prend un comparateur ajoutais Java 1,2 http://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html#TreeMap-java.util.Comparator-

1

Vérifiez la documentation: http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html#TreeMap(java.util.Comparator)

Le comparateur doit comparer les clés, pas les valeurs.

+0

Alors que c'était aussi mon initiale, bien que basé sur le nom du comparateur et le nom du type de valeur, quelque chose me dit que le compilateur donnerait une erreur différente pour ce cas. Donc, c'est probablement la réponse à la question qui apparaîtra après avoir résolu le problème signalé par Peter. – Pshemo

+0

Eclipse renvoie la même erreur que celle qu'il a décrite, sauf avec les informations de type paramétrées dans TreeMap. – Adam

+0

OK, ce que j'ai raté est la possibilité que OP a effectivement signalé une erreur avec les types paramétrés, mais comme c'est le navigateur '<..>', la partie n'a pas été affichée. Je l'ai corrigé dans la question. – Pshemo