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

Priority queue comparing - java vs c++

我不知道如何像在 C++ 中一样在 java 中使用优先级队列。 在 C++ 中我们可以这样写:

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

所以当我们 class 像这样时:

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++ 制作类似的东西吗?

当您创建 Java PriorityQueue 时,请使用带有 Comparator 的构造函数。这允许您使用任何您想要的比较逻辑,尽管可能已经为 class.

定义了任何 compareTo 方法。