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());
有没有更好的方法来执行此操作而不是在主程序中检查空指针?
答案 0 :(得分:1)
根据java最佳编码实践,如果你有一个方法返回一个集合,例如list / set / map,并且在集合中没有元素的情况下,那么重新调整空集合而不是null总是好的。
例如,您可以使用列表:
return Collections.emptyList(); // when the list is empty instead of return null
如果程序员错过了空指针检查,这会在调用代码上保存空指针异常。
希望它有所帮助!
答案 1 :(得分:0)
我不知道您使用的LinkedList
是什么类型,因为JDK附带的版本是通用的,并且没有dequeue()
和queue(..)
方法但是最合理的方法这样做的方法是使用isEmpty()
方法,以便你可以这样做:
while (!q.isEmpty()) {
S.O.P(q.deque().getString());
}
请注意,此功能适用于JDK附带的所有集合,因为它在Collection<E>
接口中声明。
答案 2 :(得分:0)
根据良好的编码习惯,始终返回空集合。
List: Collections.emptyList()
Set: Collections.emptySet()
Map: Collections.emptyMap()
以上帮助: