背景
在做一道leetcode题目时,需要向队列中插入null,由于本人一直使用ArrayDeque作为队列数据结构使用,在这道题中报了空指针异常,而官解中使用LinkedList则没有异常抛出,于是就去查询源码
ArrayDeque的offer()方法
经过层层寻找,ArrayDeque的offer()方法等效于addLast()方法,源码显示再插入元素时,会首先判断该元素是否为null,如果为null,则抛出NullPointerException
LinkedList的offer()方法
可以看出LinkedList的offer()方法等效于linkedLast()方法,该方法中并未进行是否为null的判断
结论
如果遇到需要添加null的队列时,使用LinkedList,或者使用ArrayDeque时进行判断,如果为null则不添加