优先级队列比较 - java与c ++

时间:2016-10-31 14:55:47

标签: java c++ priority-queue

我不知道如何在Java中使用优先级队列,就像在C ++中一样。 在c ++中,我们可以这样做:

priority_queue<object*, vector<object*>, compareClass>

所以当我们有这样的课时:

class Foo{
public:
    int number1;
    int number2
    Foo(){};
};

我们可以使用两个不同的队列来比较两个不同的想法,只需要制作两个compareClasses。

在java中,当我像这样排队时,我遇到了问题:

PriorityQueue<Foo> pq = new PriorityQueue<Foo>();

我只能覆盖compareTo函数一次。 我知道我可以覆盖这样的东西:

class Foo implements Comparable<Foo>{
public int number1;
public int number2;

    @Override
    public int compareTo(Foo other){
         if(number2 !=  // something)
             return Int.compare(number, other.number);
         else
             return Int.compare(number2, other.number2);
    }
}

在这种情况下,程序的共谋性是不同的。 我可以在Java中使用C ++编写类似的内容吗?

1 个答案:

答案 0 :(得分:3)

创建Java PriorityQueue时,请使用带Comparator的构造函数。这允许您使用您想要的任何比较逻辑,尽管可能已经为该类定义了任何compareTo方法。