优先级队列比较 - 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
方法。
我不知道如何像在 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
方法。