首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在java中,linkedlist的poll()和pop()有什么不同?

在java中,linkedlist的poll()和pop()有什么不同?
EN

Stack Overflow用户
提问于 2016-02-22 14:39:23
回答 2查看 24.3K关注 0票数 12

我最近发现在java API中有两个类似的linkedlist方法,它们都删除第一个节点并返回它。我写了下面的代码来测试,它们做的是完全一样的thing.Do,它们的工作原理是完全一样的吗?

代码语言:javascript
代码运行次数:0
运行
复制
    test.add(1);
    test.add(2);
    test.add(3);
    System.out.println(test.pop());
    for(int i = 0; i < test.size();i++ ){
        System.out.print(test.get(i) + " ");
    }
    System.out.println("");
    System.out.println(test.poll());
    for(int i = 0; i < test.size();i++ ){
        System.out.print(test.get(i) + " ");
    }
    System.out.println("");

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-02-22 14:42:15

返回null +删除操作:poll() docs

抛出异常+移除操作:pop()docs

票数 38
EN

Stack Overflow用户

发布于 2016-02-22 14:45:04

它们在功能上是等价的(除了处理空列表的方式之外),但是您可以获得这两种变体,因为LinkedList是队列和堆栈(即QueueDeque)的实现。

您可以在source code中查看它们的实现:

代码语言:javascript
代码运行次数:0
运行
复制
public E poll() {
    final Node<E> f = first;
    return (f == null) ? null : unlinkFirst(f);
}

public E pop() {
    return removeFirst();
}

public E removeFirst() {
    final Node<E> f = first;
    if (f == null)
        throw new NoSuchElementException();
    return unlinkFirst(f);
}

因此,如果列表为空,poll()将返回null,而pop() (和removeFirst())将引发NoSuchElementException。这使得pop()成为一种稍微好用的方法,因为您不必处理空值。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35547237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档