关于java优先级队列的问题

时间:2011-04-15 08:56:50

标签: java priority-queue

我正在尝试拥有一个可以接受X类对象的队列。这些对象X中的每一个都有一个名为distance的int类型的变量。如何创建一个优先级队列来获取X类型的对象,但是根据每个对象的可变距离对它们进行排序?

3 个答案:

答案 0 :(得分:2)

PriorityQueue提供了constructor comparator。您可以使用它来订购商品。

答案 1 :(得分:1)

您可以使用以下比较器:

import java.util.Comparator;

public class XComparator implements Comparator<X>
{
    @Override
    public int compare(X m, X n)
    {

        if (m.distance < n.distance)
        {
            return -1;
        }
        if (m.distance > n.distance)
        {
            return 1;
        }
        return 0;
    }
}

以下是创建优先级队列的方法:

int initialCapacity = 20;
Comparator<X> comparator = new XComparator();
PriorityQueue<X> queue = new PriorityQueue<X>(initialCapacity, comparator);

答案 2 :(得分:0)

多功课?

查看wiki page

简而言之,您可以使用堆实现优先级队列。