在Java的LinkedList实现中,我看到两个方法,在我看来它们似乎具有相同的功能。getFirst()
--返回列表中的第一个元素。peekFirst()
--检索但不删除此列表的第一个元素,如果此列表为空,则返回null。
它们都获得指向LinkedList中的First元素的指针,而不对其进行任何更改。那有什么区别
我看到的唯一区别是,如果列表为空,peekFirst
返回null
,如果列表为空,getFirst
抛出NoSuchElementException
。这种设计模式有什么用?
4条答案
按热度按时间chhkpiq41#
Java在1.2版本中引入了
LinkedList
。这是在提供getFirst
方法时。当列表为空时,此消息抛出NoSuchElementException
,导致程序员在调用之前进行额外的检查:字符串
这是一个不便之处,在Java版本1.6中通过添加
peekFirst
方法和Dequeue<T>
接口的其他方法来修复。bxjv4tth2#
只有一个原因:1)减少了开发过程中的异常处理
字符串
上面是peekFirst()的实现,它只是检查大小为零,并返回NULL而不是抛出Exception
yhuiod9q3#
LinkedList是一个Deque。Deque API定义了以两种形式存在的方法:一个在操作失败时抛出异常,另一个返回一个特殊的值(根据操作的不同,可以是null或false)。
14ifxucb4#
如果你的linkedList有数据,那么就没有区别。但是如果你的linkedList是空的,那么peekFirst()方法返回null。它不会抛出任何错误或异常。但是getFirst()方法在列表为空时抛出异常。