另一个 class 的构造函数中的比较器初始化
Comparator initialisation inside constructor of another class
我遇到了以下代码。在这里,我们如何在优先级队列的构造函数中初始化一个比较器?
我知道比较器是 Java 中的接口,应该在另一个 class 中实现。
理想情况下,我们应该在 class 中实现比较器,并在 PriorityQueue
构造函数中使用它的初始化。
但下面的代码有效。如何?
PriorityQueue<ArrayList<Integer>> heap = new PriorityQueue<ArrayList<Integer>>(10, new Comparator<ArrayList<Integer>>(){
public int compare(ArrayList<Integer> list1, ArrayList<Integer> list2) {
return list1.get(2) - list2.get(2);
}
在参考代码 snap 中,已经使用构造函数创建了优先级队列对象,该构造函数将两个对象作为参数,即 int 类型和 Comparator 类型。
在参考代码 snap 中,Comparator 类型对象已创建为匿名内部 class 并作为第二个对象传递给 PriorityQueue 构造函数。
为了更好地理解,您可以在下面的两个语句中打破该语句。
1st 将创建比较器对象,2nd 将该对象传递给阻塞队列。
比较器>比较器=新比较器>(){
public int compare(ArrayList list1, ArrayList list2) {
return list1.get(2) - list2.get(2);
}
};
PriorityQueue>heap = new PriorityQueue>(10, comparator);
我遇到了以下代码。在这里,我们如何在优先级队列的构造函数中初始化一个比较器?
我知道比较器是 Java 中的接口,应该在另一个 class 中实现。
理想情况下,我们应该在 class 中实现比较器,并在 PriorityQueue
构造函数中使用它的初始化。
但下面的代码有效。如何?
PriorityQueue<ArrayList<Integer>> heap = new PriorityQueue<ArrayList<Integer>>(10, new Comparator<ArrayList<Integer>>(){
public int compare(ArrayList<Integer> list1, ArrayList<Integer> list2) {
return list1.get(2) - list2.get(2);
}
在参考代码 snap 中,已经使用构造函数创建了优先级队列对象,该构造函数将两个对象作为参数,即 int 类型和 Comparator 类型。
在参考代码 snap 中,Comparator 类型对象已创建为匿名内部 class 并作为第二个对象传递给 PriorityQueue 构造函数。
为了更好地理解,您可以在下面的两个语句中打破该语句。 1st 将创建比较器对象,2nd 将该对象传递给阻塞队列。
比较器>比较器=新比较器>(){ public int compare(ArrayList list1, ArrayList list2) { return list1.get(2) - list2.get(2); } };
PriorityQueue>heap = new PriorityQueue>(10, comparator);