From Javadoc:
Queue implementations generally do not allow insertion of null elements, although some implementations, such as LinkedList, do not prohibit insertion of null. Even in the implementations that permit it, null should not be inserted into a Queue, as null is also used as a special return value by the poll method to indicate that the queue contains no elements.
How should it be interpreted? We can insert the null value into the LinkedList but couldn't insert it into the Queue, despite implementing Queue by LinkedList.
It means that if you insert a null to a LinkedList, if you call poll and get null, you can't tell is the Queue is empty or if a null element was at the head of the Queue.
Therefore, you can insert null to a LinkedList, but you should avoid doing so if you intend to use that LinkedList as a Queue.
If you look at the implementation of poll() :
public E poll() {
if (size==0)
return null;
return removeFirst(); // if the first element is null, `removeFirst()`
// returns null, and you might mistakenly assume
// the Queue is empty
}
Let me Break it:
Queue implementations generally do not allow insertion of null elementsFor instance if you take PriorityQueue you can't insert a null value,
PriorityQueue<String> prQueue=new PriorityQueue<String>();
prQueue.add("aa");
prQueue.add(null);
it will give a NullPointerException.
Although some implementations, such as LinkedList, do not prohibit insertion of null LinkedList also implements Queue but it allow null value. (it says : .. .. generally .. .. not restricted )
LinkedList<String> linkdeList=new LinkedList<String>();
linkdeList.add("aa");
linkdeList.add(null); //ok.
Even in the implementations that permit it, null should not be inserted into a Queue, as null is also used as a special return value by the poll method to indicate that the queue contains no elements.So you can insert null in LinkedList but you shouldn't specially if you use LinkedList as a queue
Because poll() method of LinkedList
Returns:
the head of this list, or null if this list is empty
so if you insert null and get null from poll() you can't say is it your inserted one or the LinkedList is empty.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With