java - 如何创建根据类的某些属性排序的优先级队列?

标签 java priority-queue

我创建了一个 Node 类:

public class Node {
int vertex;
double latency;
Node predecessor;}

 public double getLatency()
{
    return latency;
}

我想创建一个优先级队列,按延迟从最小到最大对节点进行排序。经过研究,我认为我需要重写比较器?

PriorityQueue<Node> pqueue = new PriorityQueue<Node>(numVertices, new Comparator<Node>({
        @Override

            ???
        }
    }

我不太确定如何覆盖它。

最佳答案

您实际上只需要比较两种延迟。这意味着重写 Comparator 类的方法 compare 来比较两个输入 Node 的延迟:

PriorityQueue<Node> pqueue = new PriorityQueue<Node>(numVertices, new Comparator<Node>({
    @Override
    public int compare(Node a, Node b) {
        return Integer.compare(a.getLatency(), b.getLatency());
    }
}

但是这仅适用于 Java 7,对于其他版本:

new Integer(a.getLatency()).compareTo(new Integer(b.getLatency()));

如果您不想创建新对象,则像往常一样比较两个 int

关于java - 如何创建根据类的某些属性排序的优先级队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646207/

相关文章:

java - Java 中的自定义正则表达式替换

java - 我无法将此字符串转换为日期

java - 如何通过 Intent 从 Activity 向服务发送数据 - 空指针问题

java - QuickSort 三路分区+混合实现

java - Java 中的优先级队列

java - 我们可以在java中有一个整数数组的优先级队列吗

c++ - 为什么我不能在成对的优先级队列中简单地覆盖 < ?

java - 在 Android 上创建多个日历事件

c++ - 分层优先级索引

c - 在没有数组的情况下实现优先级队列的插入和删除功能?