区别观察
观察源码
我们都知道peek方法和element方法作用都是检索但不删除此列表的头(第一个元素)。
那么他们的区别到底在哪?
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
观察peek方法的源码
public E peek() {
LinkedList.Node var1 = this.first;
return var1 == null ? null : var1.item;
}
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
观察element方法的源码
public E element() {
return this.getFirst();
}
由源码观察我们不难发现
如果LinkedList为空,peek 的返回值为null
而element本质是调用了getlast方法
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
观察getLast方法
public E getFirst() {
LinkedList.Node var1 = this.first;
if (var1 == null) {
throw new NoSuchElementException();
} else {
return var1.item;
}
}
由源码得出结论
LinekedList为空element方法会抛出NoSuchElementException异常