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

标签 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
    .

}

最佳答案

Comparator 是一个接口(interface),所以你不能用new 实例化它。您可以使用匿名类将比较委托(delegate)给对象:

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

关于java - 优先级队列中的比较器有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18684143/

相关文章:

java - 带有 SimpleLogger : Is it possible to log to a file AND System. 的 SLF4J?

java - Azure 批量启动任务超出 autoScaleEvaluationInterval

java - 如何正确处理来自 close() 的 IOException

java - 在 JAX-RS 中,整个 JSON 字符串都会被发布

python - 从堆 : why siftup and siftdown need to be called? 中移除值

java - 有人可以向我解释间接堆/间接优先级队列的概念吗?

c++ - 在保持数组有序的同时插入和删除数组中的元素

java - 如何在Quartz调度器中实现排队?

algorithm - 寻找获胜者和第二名获胜者

cluster-computing - 多用户集群: IBM Platform LSF: user changing priority of jobs