当前位置: 首页 > 知识库问答 >
问题:

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

葛书
2023-03-14

在Java的LinkedList实现中,我看到两个方法在我看来具有相同的功能。

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

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

这两个元素都会获得指向LinkedList中First元素的指针,而不会对其进行任何更改。那么,有什么区别?

我看到的唯一区别是,如果列表为空,则< code>peekFirst返回< code>null,如果列表为空,则< code>getFirst抛出< code > NoSuchElementException 。这样的设计模式有什么用呢?

共有3个答案

卫博学
2023-03-14

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

东郭翰音
2023-03-14

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

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

     return getFirst();
 }

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

苏志
2023-03-14

Java在1.2版中引入了LinkedList。此时提供了getFirst方法。当列表为空时,此消息会引发NoSuchElementExc的,导致程序员在调用前做额外的检查:

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

这是一个不方便的问题,在1.6版中Java通过添加peekFirst方法De的其他方法来修复

 类似资料:
  • 问题内容: 在Java中ArrayList和LinkedList有什么区别?何时使用哪一个? 问题答案: 并且是接口的两种不同的实现。用双向链表实现它。用动态调整大小的数组实现它。 与标准的链表和数组操作一样,各种方法将具有不同的算法运行时。 对于 是O(n)(平均n/4步) 是O(1) 是O(n)(平均为n/4步),但是当(index = 0 —LinkedList 是O(n)(平均n / 4步

  • 本文向大家介绍浅析 ArrayList 和 LinkedList 有什么区别,包括了浅析 ArrayList 和 LinkedList 有什么区别的使用技巧和注意事项,需要的朋友参考一下 ArrayList 和 LinkedList 有什么区别,是面试官非常喜欢问的一个问题。可能大部分小伙伴和我一样,能回答出“ArrayList 是基于数组实现的,LinkedList 是基于双向链表实现的。” 关

  • ArrayList是动态数组的数据结构实现,查找和遍历的效率较高; LinkedList 是双向链表的数据结构,增加和删除的效率较高;

  • 问题内容: 我一直认为Java 中的运算符用于验证其两个布尔操作数是否均为,并且该&运算符用于对两种整数类型进行按位运算。 最近我知道,也可以使用运算符来验证其两个布尔操作数是否均为,唯一的区别是即使LHS操作数为false,它也会检查RHS操作数。 Java中的运算符是否在内部重载?还是在这背后有其他概念? 问题答案: <-验证两个操作数 <-停止评估第一个操作数是否为false,因为结果为fa

  • 本文向大家介绍区分Java中的ArrayList和LinkedList,包括了区分Java中的ArrayList和LinkedList的使用技巧和注意事项,需要的朋友参考一下 一:ArrayList和LinkedList的大致区别如下: 1.ArrayList是实现了基于动态数组的数据结构,ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高 2.Li

  • 问题内容: 我只是想知道为什么我们通常在两个布尔之间使用逻辑OR 而不是按位OR ,尽管它们都运行良好。 我的意思是,请看以下内容: 我们可以代替使用吗?与和相同。 问题答案: 如果您使用和形式,而不是这些运算符的和形式,则Java不会费心地单独评估右手操作数。 这是您是否希望缩短评估时间的问题-在 大多数情况 下都是如此。 说明短路好处的一个好方法是考虑以下示例。 正如Jeremy和Peter提