在Java的LinkedList中,getFirst()和peekFirst()有什么区别?

2022-09-02 21:18:16

在Java的LinkedList实现中,我看到两种方法在我看来具有相同的函数。

getFirst()--返回此列表中的第一个元素。

peekFirst()--检索但不删除此列表的第一个元素,如果此列表为空,则返回 null。

它们都获取指向 LinkedList 中 First 元素的指针,而无需对其进行任何更改。那么,有什么区别呢?

我看到的唯一区别是,如果列表为空,则返回,如果列表为空,则抛出一个。这种设计模式有什么用?peekFirstnullgetFirstNoSuchElementException


答案 1

Java 在 1.2 版中引入。这是提供方法的时间。当列表为空时,将引发此消息,导致程序员在调用之前执行额外的检查:LinkedListgetFirstNoSuchElementException

Element e = null;
if (!myList.isEmpty()) {
     e = myList.getFirst();
}

这是一个不便之处,在 Java 版本 1.6 中,通过添加接口的方法和其他方法,已修复了此问题。peekFirstDequeue<T>


答案 2

只有一个reson:1)它减少了开发时的异常处理

 public E peekFirst() {
     if (size==0)
        return null;

     return getFirst();
 }

以上是peekFirst()的实现,它只检查大小为零,并返回NULL而不是抛出异常


推荐