相关疑难解决方法(0)

将不可比较的对象添加到 PriorityQueue

考虑以下代码:

import java.util.PriorityQueue;

public class Test {

    public static void main(String argv[]) {
        PriorityQueue<A> queue = new PriorityQueue<>();
        System.out.println("Size of queue is " + queue.size()); // prints 0
        try {
            queue.add(new A());
        } catch (ClassCastException ignored) { }
        System.out.println("Size of queue is " + queue.size()); // prints 1
    }

} 
class A { } // non-comparable object
Run Code Online (Sandbox Code Playgroud)

在此代码中,一个明确不可比较的对象被添加到PriorityQueue. 正如PriorityQueue.addJavadoc 所预期的那样,此代码会抛出 a ClassCastException,因为该对象不可比较。

然而,尽管抛出了异常,但队列的大小似乎仍然增加了。

我原本期望两个打印语句都输出 0,但第二个打印语句实际上输出 1,就像一个对象已添加到队列中一样。

这里发生了什么?

java priority-queue

-2
推荐指数
2
解决办法
913
查看次数

标签 统计

java ×1

priority-queue ×1