优先级队列中的比较器有错误

时间:2013-09-08 13:21:36

标签: java heap priority-queue comparator

除了HeapPriorityQueue构造函数中的比较器之外,我的堆优先级队列类中的每一行都没有错误。我不知道如何解决它,所以不会有错误。由于错误,我甚至无法检查算法是否正常工作。有人可以帮助我吗?

import java.util.ArrayList;
import java.util.Comparator;

public class HeapPriorityQueue<K extends Comparable<K>,V> implements PriorityQueue<K,V>     
{
    protected Comparator<K> comp;

    .
    .      //other lines of code
    .

    public HeapPriorityQueue() {
        heap = new ArrayList<Entry<K,V>>();
        heap.add(null);
        comp = new Comparator<K>();      //<-------- with error
    }

    .
    .      //other lines of code
    .

    comp.compare(oneKey,anotherKey);    //<---- using comp here

    .
    .      //other lines of code
    .

}

2 个答案:

答案 0 :(得分:3)

Comparator是一个接口,因此您无法使用new对其进行实例化。您可以使用匿名类将比较委托给对象:

comp = new Comparator<K>() {
    @Override
    public int compare(K a, K b) {
       return a.compareTo(b);
    }
}

答案 1 :(得分:0)

我认为编译错误消息是可自我解释的。线

comp = new Comparator<K>();

是尝试实例化接口,因为Comparator是一个接口。您应该创建自己的类来实现比较器或使用第三方类之一或创建匿名内部类。