La Mise En Œuvre De Java Comparateur

Je suis en train d'écrire un algorithme qui utilise un min-file d'attente de priorité, donc j'ai cherché partout sur google et trouvé la PriorityQueue. Il semble que dans le but de les utiliser, cependant, je vais avoir besoin de dire combien je tiens à donner la priorité, et que la façon de le faire est avec un comparateur (je veux comparer des champs de données spécifiques de mon "Node1" objets). De plus google a présenté l'idée de la création d'un nouvel indicateur qui met en Comparaison, mais remplace la méthode de comparaison. Ce que j'essaie est-ce (et autres variantes):

import java.util.Comparator;

public class distComparator implements Comparator {

    @Override
    public int compare(Node1 x, Node1 y){
        if(x.dist<y.dist){
            return -1;
        }
        if(x.dist>y.dist){
            return 1;
        }
        return 0;
    }
}

Le compilateur protestations sur plusieurs motifs, dont l'une est que je n'ai pas dépassé le comparateur de classe (qui, dit-on abstrait)

erreur: distComparator n'est pas abstrait et ne remplace pas la méthode abstraite compare(Object,Object) dans le Comparateur de

J'ai mis-à-dire "compare(object x, l'objet, y)", qui s'occupe de cette question. À ce stade, si le compilateur se plaint qu'il ne peut pas trouver la "dist" variable x ou y, ce qui fait sens, car ils font partie de mon Node1 de la classe, pas la classe de l'Objet.

Alors, comment est-ce censé fonctionner? Il doit avoir le type Object, apparemment, mais alors comment puis-je diriger vers la bonne variable?

OriginalL'auteur Jo.P | 2013-04-05