我正在解决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
答案 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());