2010-09-01 10 views
0

je besoin d'une file d'attente prioritaire des objets, mais je continue à obtenir cette erreur:PriorityQueue d'objets d'une classe interne - Impossible de trouver le constructeur

symbol: constructor PriorityQueue(anonymous java.util.Comparator<map.Node>>) 
location: class java.util.PriorityQueue<map.Node> 
    PriorityQueue<Node> pq = new PriorityQueue<Node>(new Comparator<Node>() 

Voici un extrait de mon code:

public class map { 

static class Node { 
    Node parent; 
    State state; 
    private int cost; 
    public Node() {}; 
    public Node(Node parent_passed, State state_passed, Integer cost_passed) { 
    this.parent = parent_passed; 
    this.state = state_passed; 
    this.cost = cost_passed; 
    } 
    public int getCost() 
    { 
    return cost; 
    } 

    } 

public static void main(String[] args) 
{ 
    PriorityQueue<Node> pq = new PriorityQueue<Node>(new Comparator<Node>() 
    { 
    public int compare(Node a1, Node a2) { 
    return a2.getCost() - a1.getCost(); 
    } 
    }); 


} 

Des idées? Dois-je rendre publique la classe Node et la mettre dans son propre fichier?

Répondre

0

Le problème est qu'il n'y a pas de constructeur du type PriorityQueue<E>(Comparator<E>) Le plus proche, vous pouvez obtenir est PriorityQueue<E>(int InitialSize, Comparator<E>) .Voir here

il suffit de changer votre principal:

public static void main(String[] args) 
    { 
     @Override 
     PriorityQueue<Node> pq = new PriorityQueue<Node>(10, new Comparator<Node>() 
     { 

     public int compare(Node a1, Node a2) { 
     return a2.getCost() - a1.getCost(); 
     } 
     });