ArrayDeque 的pop()和poll()方法

ArrayDeque 底层是双端队列的数据结构。java中队列和栈的实现一般都是使用集合ArrayDeque。下面记录一下ArrayDeque中pop() 和 poll()方法的使用。
pop() 一般指弹栈 poll()指出队
但是在双端队列集合中pop()方法不是弹栈的操作。

// Java program to demonstrate the example 
// of T pop() method of ArrayDeque 
 
import java.util.*;
 
public class PopOfArrayDeque {
    public static void main(String[] args) {
        // Creating an ArrayDeque with initial capacity of
        // storing elements
        Deque < String > d_queue = new ArrayDeque < String > (10);
 
        //By using add() method to add elements
        //in ArrayDeque
        d_queue.add("C");
        d_queue.add("C++");
        d_queue.add("Java");
        d_queue.add("Php");
        d_queue.add("DotNet");
 
        // Display Deque Elements
        System.out.println("d_queue before pop(): ");
        System.out.println("ArrayDeque Elements = " + d_queue);
 
        System.out.println();
 
        // By using pop() method to remove and return the
        // element at the first position in ArrayDeque
        String ele = d_queue.pop();
 
        // Display Returned Elements
        System.out.println("d_queue.pop() : " + ele);
 
        System.out.println();
 
        // Display Deque Elements
        System.out.println("d_queue after pop(): ");
        System.out.println("ArrayDeque Elements = " + d_queue);
    }
}

在这里插入图片描述
下面测试一下ArrayDeque的poll方法 出队

import java.util.*;

public class PollOfArrayDeque {
    public static void main(String[] args) {
        // Creating an ArrayDeque with initial capacity of
        // storing elements
        Deque< String > d_queue = new ArrayDeque< String >(10);

        //By using add() method to add elements
        //in ArrayDeque
        d_queue.add("C");
        d_queue.add("C++");
        d_queue.add("Java");
        d_queue.add("Php");
        d_queue.add("DotNet");

        // Display Deque Elements
        System.out.println("d_queue before poll(): ");
        System.out.println("ArrayDeque Elements = " + d_queue);

        System.out.println();

        // By using poll() method to remove and return the
        // element at the first position in ArrayDeque
        String ele = d_queue.poll();

        // Display Returned Elements
        System.out.println("d_queue.poll() : " + ele);

        System.out.println();

        // Display Deque Elements
        System.out.println("d_queue after poll(): ");
        System.out.println("ArrayDeque Elements = " + d_queue);
    }
}

在这里插入图片描述
ArrayDeque的pop 和poll 方法的效果是一样的都是先入队的出队。

我们看一下源码:
在这里插入图片描述
在这里插入图片描述
pop() 方法等价于removeFirst(), 底层调用的是removeFirst()方法。
poll()方法等价于pollFirst() 方法,底层调用的是pollFirst()。
两个方法的区别在于如果deque是空的(Empty) poll方法会返回null, pop方法会抛出异常NoSuchElementException()。这也是removeFirst(), pollFirst()方法的区别。
实际上,removeFirst底层调用的也是pollFirst方法,只是增加了一个null的判断。
附上源码:
在这里插入图片描述
有兴趣的可以去看看源码的pollFirst实现。

结论:

  • pop和poll都是返回队列的队首元素,按照先入队的先出队的顺序;
  • ArrayDeque集合在作为栈时,默认队首也是栈首。
参考:

https://blog.csdn.net/cumubi7453/article/details/107795019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值