PriorityQueue объектов из внутреннего класса - не удается найти конструктор - PullRequest
0 голосов
/ 01 сентября 2010

Мне нужна приоритетная очередь объектов, но я получаю эту ошибку:

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>() 

Вот выдержка из моего кода:

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(); 
   }
  });


 }

Есть идеи? Нужно ли делать класс Node общедоступным и помещать его в собственный файл?

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Вы пытаетесь использовать несуществующий конструктор для создания объекта PriorityQueue. В JavaDoc не определен конструктор PriorityQueue (Comparator) (http://download.oracle.com/javase/6/docs/api/java/util/PriorityQueue.html).). У него есть конструктор, который принимает int для initialCapacity и компаратор, вы можете попробовать это.

0 голосов
/ 02 февраля 2013

Проблема в том, что нет конструктора типа PriorityQueue<E>(Comparator<E>) Самый близкий, который Вы можете получить, является PriorityQueue<E>(int InitialSize, Comparator<E>). См. здесь

Просто измените свою главную на:

  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(); 
       }
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...