在Java中,LinkedList
类实现了Queue
接口,因此它提供了队列操作的功能。poll()
和peek()
是Queue
接口中定义的两个重要方法,它们在LinkedList
(以及其他实现了Queue
接口的类)中的实现有其特定的区别和用途。
peek() 方法
- 用途:
peek()
方法用于获取队列头部的元素,但不从队列中移除它。如果队列为空,则返回null
。 - 返回值:返回队列头部的元素,如果队列为空,则返回
null
。 - 异常:此方法不会抛出异常。
poll() 方法
- 用途:
poll()
方法用于移除并返回队列头部的元素。如果队列为空,则返回null
。 - 返回值:返回队列头部的元素,并将其从队列中移除。如果队列为空,则返回
null
。 - 异常:此方法同样不会抛出异常。
区别总结
- 是否移除元素:
peek()
方法仅查看队列头部的元素而不移除它,而poll()
方法移除并返回队列头部的元素。 - 返回值:在队列非空的情况下,两者都返回队列头部的元素。但在队列为空的情况下,两者都返回
null
,但背后的行为(是否移除元素)是不同的。 - 异常处理:两者都不会因为队列为空而抛出异常,这是它们与如
remove()
(在某些集合类中)方法的一个主要区别,后者在尝试从空集合中移除元素时会抛出异常。
使用场景
- 当你需要查看队列头部的元素但不希望改变队列时,使用
peek()
。 - 当你需要移除并获取队列头部的元素时,使用
poll()
。这在处理如任务队列等场景时非常有用,其中你需要处理并移除队列中的任务。