我偶然发现了下面的代码。在这里,我们如何在优先级队列的构造函数中初始化比较器?
我知道比较器是Java中的一个接口,应该在另一个类中实现。
理想情况下,我们应该在类中实现比较器,并在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);
}发布于 2017-12-29 20:15:46
在参考代码快照中,使用构造函数创建了优先级队列对象,该构造函数将两个对象作为参数,即int类型和类型比较器。
在参考代码快照中,比较器类型对象作为匿名内部类创建,并作为第二个对象传递给PriorityQueue构造函数。
为了更好地理解,您可以在以下两条语句中打断该语句。第一个将创建比较器对象,第二个将该对象传递给阻塞队列。
Comparator>比较器=新的Comparator>(){公共int比较( ArrayList list1,ArrayList list2) {返回列表1.get(2)- list2.get(2);};
PriorityQueue>堆=新PriorityQueue>(10,比较器);
https://stackoverflow.com/questions/48027429
复制相似问题