如何解决错误:15:错误:无法推断openjdk 1.7.0_95中PriorityQueue <>的类型参数?

时间:2019-07-28 15:07:53

标签: java data-structures java-8 priority-queue

我正在解决question on hackerearth,当我使用Java版本Java 8(oracle 1.8.0_131)时,它已成功编译并通过,但是当使用Java(openjdk 1.7.0_95)时,它给出了{{1 }}。在声明error 15: error: cannot infer type arguments for PriorityQueue<>优先级队列时,该错误就在行上。我想知道如何解决它以及为什么会发生此错误。这是代码:(请注意,这个问题不是任何正在进行的竞赛的一部分),而代码的相关部分仅在main函数中。

mx

2 个答案:

答案 0 :(得分:2)

在Java 7中,没有PriorityQueue构造函数只接受Comparator作为参数。看一下Java 7 Priority queue docs。但是在Java 8+中,此类有constructor

您最好的选择是使用具有初始容量和Comparator的构造函数:

PriorityQueue<Integer> mx = new PriorityQueue<Integer>(10, Collections.reverseOrder());

答案 1 :(得分:2)

该构造函数是在Java-8中添加的,因此无法对1.7起作用。

在Java-8中添加了一个名为target type的功能,但与您的问题无关。因此就像添加一个构造函数参数一样简单,例如initial capacity

PriorityQueue<Integer> mx = new PriorityQueue<>(5, Collections.reverseOrder());