使用以下代码实例化优先级队列。 没有预料到它会通过编译器,因为official doc表示pq需要2个参数:初始容量和比较器。但代码编译并没有运行时错误。任何解释?
PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
PriorityQueue<ListNode> pq = new PriorityQueue<>(
new Comparator<ListNode>(){
public int compare(ListNode n1, ListNode n2) {
return n1.val - n2.val;
}
});
答案 0 :(得分:3)
有多个构造函数。
您使用的只需要Comparator
个实例:
/**
* Creates a {@code PriorityQueue} with the default initial capacity and
* whose elements are ordered according to the specified comparator.
*
* @param comparator the comparator that will be used to order this
* priority queue. If {@code null}, the {@linkplain Comparable
* natural ordering} of the elements will be used.
* @since 1.8
*/
public PriorityQueue(Comparator<? super E> comparator) {
this(DEFAULT_INITIAL_CAPACITY, comparator);
}
编辑:
此构造函数是在Java 8中添加的,这就是为什么在您提供的链接中没有提到它。 Java 8 version includes the new constructor。
答案 1 :(得分:0)
具有单个比较器的构造函数在Java 8中定义(但未在Java 7中定义)。
因此,解释是您正在查看Java 7 API但使用Java 8。