在Java中的LinkedList对象上使用poll(),pollFirst(),pollLast(),removeFirst()和remove()方法有什么区别?

时间:2015-09-06 07:06:24

标签: java

我有一个LinkedList对象。

我想在我的LinkedList对象上应用这5个方法。

LinkedList<String> ll = new LinkedList<String>();

1) Object o = ll.poll();
2) Object o = ll.pollFirst();
3) Object o = ll.pollLast();
4) ll.remove();
5) Object o = ll.removeFirst();

当我使用poll(),pollFirst(),removeFirst()时,那些正在删除列表的第一项。

任何人都可以告诉我在LinkedList对象上使用这些方法时发生了什么?以及适用于LinkedList对象的这5种方法之间有什么区别。

提前致谢。

2 个答案:

答案 0 :(得分:8)

Javadoc告诉你:

  

poll():检索并删除此双端队列所代表的队列的头部(换句话说,此双端队列的第一个元素),如果此双端队列为空,则返回null。

     

remove():返回此列表的头部,如果此列表为空则抛出NoSuchElementException

     

pollFirst()与poll()相同。

     

pollLast()返回此列表的最后一个元素,如果此列表为空,则返回null

     

removeFirst()与remove()

相同

答案 1 :(得分:4)

我认为方法的命名非常明显,告诉他们做了什么。

只有令人困惑的事情是为什么2个方法在poll()和pollFirst()中做同样的事情。为此,见下文 -

LinkedList实现了两个接口 - Queue和Deque。 Deque从Queue延伸出来。 现在,Deque定义了方法 - Deque#pollFirst()并继承了方法 - Queue#poll()。 因此,LinkedList基本上为它实现的两个接口定义了这两个方法。