Java中LinkedList为空与等于null是否等价?基数排序报错解惑
问题解答
核心区别:null 和空 LinkedList 完全是两回事
null表示根本没有创建LinkedList对象,这个变量指向的是一个不存在的内存地址。- 空
LinkedList是已经创建好的LinkedList对象,但里面没有存储任何元素,它是一个合法存在的对象,只是内部元素数量为0。
结合你的代码场景分析
你在第133行已经把数组里的每个bucket都初始化为空LinkedList了,所以数组里的每个元素都是一个合法的LinkedList对象,不存在null的情况。这时候用bucket != null判断,所有bucket都会进入后续逻辑。
但那些没有被放入元素的bucket是空的,当你在第163行调用bucket.remove()(或类似获取元素的方法)时,空LinkedList没有元素可以操作,就会抛出NoSuchElementException。
换成!bucket.isEmpty()后,只有那些实际存储了元素的bucket才会进入循环,调用元素操作方法时自然不会报错。
内容的提问来源于stack exchange,提问作者Omar Ibrahim
相关产品推荐
相关产品推荐

