Java 如何将比较器传递给类的构造函数

Java 如何将比较器传递给类的构造函数,java,constructor,comparator,Java,Constructor,Comparator,类具有以下定义: public class MinPQ<Key> implements Iterable<Key> { private Key[] pq; // store items at indices 1 to N private int N; // number of items on priority queue private Comparator<Key> comp

类具有以下定义:

public class MinPQ<Key> implements Iterable<Key> {
private Key[] pq;                    // store items at indices 1 to N
private int N;                       // number of items on priority queue
private Comparator<Key> comparator;  // optional comparator

public MinPQ(int initCapacity) {
    pq = (Key[]) new Object[initCapacity + 1];
    N = 0;
}

public MinPQ() { this(1); }

public MinPQ(int initCapacity, Comparator<Key> comparator) {
    this.comparator = comparator;
    pq = (Key[]) new Object[initCapacity + 1];
    N = 0;
}

public MinPQ(Comparator<Key> comparator) { this(1, comparator); }
........
}
public类MinPQ实现了Iterable{
私钥[]pq;//在索引1到N处存储项
private int N;//优先级队列上的项目数
专用比较器比较器;//可选比较器
公共MinPQ(内部初始容量){
pq=(键[])新对象[initCapacity+1];
N=0;
}
公共MinPQ(){this(1);}
公共MinPQ(int初始容量、比较器比较器){
这个比较器=比较器;
pq=(键[])新对象[initCapacity+1];
N=0;
}
公共MinPQ(比较器){this(1,比较器);}
........
}
我想在另一个类中通过以下语句定义一个变量,但最后一行有错误。我想知道为什么以及如何定义它。谢谢

class Searchnode {
    Board prebd;
    Board curbd;
    int moves;
}

class BoardComparator implements Comparator<Board> {
    public int compare(Board bd1, Board bd2) {
        if (bd1.manhattan() > bd2.manhattan())
            return 1;
        else if (bd1.manhattan() < bd2.manhattan())
            return -1;
        else
            return 0;
    }
}

private MinPQ<Searchnode> pq = new MinPQ<Searchnode>(new BoardComparator());
类搜索节点{
电路板预BD;
限制董事会;
int移动;
}
类BoardComparator实现Comparator{
公共整数比较(电路板bd1、电路板bd2){
如果(bd1.manhattan()>bd2.manhattan())
返回1;
else if(bd1.manhattan()
随便一看,您的MinPQ似乎是
MinPQ
,您的比较器是
comparator
,您的类被定义为

public class MinPQ<Key> implements Iterable<Key> 
{
    public MinPQ(Comparator<Key> comparator) { this(1, comparator); }
}
public类MinPQ实现了Iterable
{
公共MinPQ(比较器){this(1,比较器);}
}

因此,我希望您必须将一个
比较器
传递给该构造函数。

谢谢。你能提供定义比较器的代码吗?问题不在于比较器,而在于类的定义。我将使用第二个泛型类型参数。看起来像java?我不确定java中的确切语法,但我希望它是
公共类MinPQ
,然后您将定义一个构造函数,其中第二种类型作为比较器的类型。有人有更多的评论吗?请帮忙!如果您想按原样使用该类,则必须使用“比较器”。如果您想为比较器使用不同的类型,您必须将其“硬编码”为特定类型,或者向类引入一个新的泛型类型参数,正如我在前面的注释中所指出的。除此之外,你还需要什么帮助?