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

pkln4tw6  于 2023-08-01  发布在  Java
关注(0)|答案(4)|浏览(107)

在Java的LinkedList实现中,我看到两个方法,在我看来它们似乎具有相同的功能。
getFirst()--返回列表中的第一个元素。
peekFirst()--检索但不删除此列表的第一个元素,如果此列表为空,则返回null。
它们都获得指向LinkedList中的First元素的指针,而不对其进行任何更改。那有什么区别
我看到的唯一区别是,如果列表为空,peekFirst返回null,如果列表为空,getFirst抛出NoSuchElementException。这种设计模式有什么用?

chhkpiq4

chhkpiq41#

Java在1.2版本中引入了LinkedList。这是在提供getFirst方法时。当列表为空时,此消息抛出NoSuchElementException,导致程序员在调用之前进行额外的检查:

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

字符串
这是一个不便之处,在Java版本1.6中通过添加peekFirst方法和Dequeue<T>接口的其他方法来修复。

bxjv4tth

bxjv4tth2#

只有一个原因:1)减少了开发过程中的异常处理

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

     return getFirst();
 }

字符串
上面是peekFirst()的实现,它只是检查大小为零,并返回NULL而不是抛出Exception

yhuiod9q

yhuiod9q3#

LinkedList是一个Deque。Deque API定义了以两种形式存在的方法:一个在操作失败时抛出异常,另一个返回一个特殊的值(根据操作的不同,可以是null或false)。

14ifxucb

14ifxucb4#

如果你的linkedList有数据,那么就没有区别。但是如果你的linkedList是空的,那么peekFirst()方法返回null。它不会抛出任何错误或异常。但是getFirst()方法在列表为空时抛出异常。

相关问题