Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自内部类的对象的优先级队列-Can';找不到构造函数_Java_Class Design_Priority Queue - Fatal编程技术网

Java 来自内部类的对象的优先级队列-Can';找不到构造函数

Java 来自内部类的对象的优先级队列-Can';找不到构造函数,java,class-design,priority-queue,Java,Class Design,Priority Queue,我需要一个对象的优先级队列,但我一直遇到以下错误: symbol: constructor PriorityQueue(anonymous java.util.Comparator<map.Node>>) location: class java.util.PriorityQueue<map.Node> PriorityQueue<Node> pq = new PriorityQueue<Node>(new Comparator<N

我需要一个对象的优先级队列,但我一直遇到以下错误:

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>() 
符号:构造函数优先级队列(匿名java.util.Comparator>)
位置:类java.util.PriorityQueue
PriorityQueue pq=新的PriorityQueue(新的比较器()
下面是我的代码摘录:

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


 }
公共类映射{
静态类节点{
节点父节点;
国家;
私人成本;
公共节点(){};
公共节点(节点父节点通过,状态状态通过,整数成本通过){
this.parent=parent\u已通过;
this.state=已通过的状态;
this.cost=已通过的成本;
}
公共int getCost()
{
退货成本;
}
}
公共静态void main(字符串[]args)
{
PriorityQueue pq=新的PriorityQueue(新的比较器()
{
公共整数比较(节点a1、节点a2){
返回a2.getCost()-a1.getCost();
}
});
}

有什么想法吗?我需要公开节点类并将其放入自己的文件中吗?

您试图使用不存在的构造函数来创建PriorityQueue对象。JavaDoc()中没有定义PriorityQueue(Comparator)构造函数。它确实有一个以int表示初始容量的构造函数和一个比较器,您可能想试试。

问题是没有类型为
PriorityQueue(comparator)的构造函数。
最接近的是
PriorityQueue(int InitialSize,Comparator)
。请参阅

只需将主菜单更改为:

  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(); 
       }
      });
publicstaticvoidmain(字符串[]args)
{
@凌驾
PriorityQueue pq=新的PriorityQueue(10,新的比较器()
{
公共整数比较(节点a1、节点a2){
返回a2.getCost()-a1.getCost();
}
});