0
Public Static Void Main() {
    LinkedList q = new LinkedList();
    q.enqueue(Object);
    System.out.println(q.deque().getString()); //it will print the string of the popped object
}

如果队列为空,它将给出异常,因为 q.deque() 引用 null 并且 null 上的任何方法都会给出异常。

我们可以通过将其更改为:

Object k = q.dequeue();
if(k != null)
System.out.println(k.getString());

有没有更好的方法来代替在主程序中检查空指针?

4

3 回答 3

1

根据 java 最佳编码实践,如果您有一个返回集合的方法,例如 list/set/map,并且如果集合中没有元素,那么返回空集合而不是 null 总是好的。

例如,您可以使用列表:

return Collections.emptyList(); // when the list is empty instead of return null

如果程序员错过了空指针检查,这将在调用代码上保存空指针异常。

希望能帮助到你!

于 2013-05-04T00:39:07.343 回答
0

我不知道您使用的是哪种类型,因为 JDK 附带的版本是通用的并且LinkedList没有方法,但最合理的方法是拥有一个方法,以便您可以执行以下操作:dequeue()queue(..)isEmpty()

while (!q.isEmpty()) {
  S.O.P(q.deque().getString());
}

请注意,JDK 附带的所有集合都存在此功能,因为它在Collection<E>接口中声明。

于 2013-05-04T00:07:02.440 回答
0

根据良好的编码实践,始终返回一个空集合。

List: Collections.emptyList()
Set: Collections.emptySet()
Map: Collections.emptyMap()

以上帮助:

  • 避免 NPE - NullPointerException
  • 在迭代之前需要额外检查集合是否为空
  • 不可变集合对象,如果调用者试图修改集合,则获取 UnsupportedOperationException
于 2016-08-02T21:04:23.883 回答