निम्नलिखित कोड पर विचार करें:आकार बढ़ जाता है जब गैर तुलनीय वस्तुओं जोड़ रहे हैं
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
queue.add(new A()); // does not throw an exception
try {
queue.add(new A()); // this time, an exception is thrown
} catch (ClassCastException ignored) {
System.out.println("An exception was thrown");
}
System.out.println("Size of queue is " + queue.size()); // prints 2
}
}
class A { } // non-comparable object
इस कोड में, एक गैर तुलनीय वस्तु पहले एक PriorityQueue
में जोड़ा जाता है। यह कोड ठीक काम करता है, as already answered here।
फिर, इस कतार में दूसरी वस्तु को जोड़ा जाता है। जैसा कि PriorityQueue.add
जवाडोक की अपेक्षा है, ClassCastException
फेंक दिया गया है क्योंकि दूसरी वस्तु पहले के तुलनीय नहीं है।
हालांकि, ऐसा लगता है कि कतार के आकार हालांकि एक अपवाद उत्पन्न हुआ था बढ़ा दिया गया था: दूसरे प्रिंट बयान आउटपुट 2 1.
के बजाय इस व्यवहार की उम्मीद है? यदि हां, तो इसके पीछे क्या कारण है और इसे कहां दस्तावेज किया गया है?