zoukankan      html  css  js  c++  java
  • Java数据结构——双端队列

    双端队列(Deque)
    双端队列是指允许两端都可以进行入队和出队操作的队列,其元素的逻辑结构仍是线性结构。将队列的两端分别称为前端和后端,两端都可以入队和出队。Deque继承自Queue接口,Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。

    常用方法

    简单实现

    import java.util.Deque;
    import java.util.LinkedList;
    
    public class MyDeque {
    public static void main(String[] args) {
    
    Deque<Integer> deque = new LinkedList<Integer>();
    deque.add(1);
    deque.add(2);
    deque.add(3);
    
    //查看队首元素
    System.out.println("队首元素:"+deque.peek());
    System.out.println("队列:"+deque);
    
    //从队首加元素(队列有容量限制时用,无则用addFirst)
    deque.offerFirst(4);
    System.out.println("队首加入元素后:"+deque);
    //从队尾加入元素(队列有容量限制时用,无则用addLast)
    deque.offerLast(5);
    System.out.println("队尾加入元素后:"+deque);
    
    //offer()默认从队尾加入元素
    deque.offer(6);
    System.out.println("队尾加入元素后:"+deque);
    
    //移除并返回队首第一个元素,队列为空时,会抛出NoSuchElementException异常
    deque.removeFirst();
    System.out.println("移除队首第一个元素后:"+deque);
    
    //移除并返回队尾第一个元素,队列为空时,会抛出NoSuchElementException异常
    deque.removeLast();
    System.out.println("移除队尾第一个元素后:"+deque);
    
    //移除并返回队首第一个元素,队列为空时,返回null
    deque.pollFirst();
    System.out.println("移除队首第一个元素后:"+deque);
    
    //移除并返回队尾第一个元素,队列为空时,返回null
    deque.pollLast();
    System.out.println("移除队尾第一个元素后:"+deque);
    
    //获取不移除队首第一个元素.队列为空时,抛出NoSuchElementException
    System.out.println("队首第一个元素:"+deque.getFirst());
    System.out.println("获取队首第一个元素后:"+deque);
    
    //获取不移除队尾第一个元素.队列为空时,抛出NoSuchElementException
    System.out.println("队尾第一个元素:"+deque.getLast());
    System.out.println("获取队尾第一个元素后:"+deque);
    
    //获取不移除队首第一个元素.队列为空时,返回null
    System.out.println("队首第一个元素:"+deque.peekFirst());
    System.out.println("获取队首第一个元素后:"+deque);
    
    //获取不移除队尾第一个元素.队列为空时,返回null
    System.out.println("队尾第一个元素:"+deque.peekLast());
    System.out.println("获取队尾第一个元素后:"+deque);
    
    //循环获取元素并在队列移除元素
    while(deque.size()>0){
    System.out.println("获取元素为:"+ deque.pop()+" 并删除");
    }
    System.out.println("队列为:"+deque);
    }
    }
  • 相关阅读:
    转载-HTTP
    程序员如何写出杀手级的简历
    23 岁的你,曾处于什么样的状态?现在呢?
    IntelliJ IDEA 14 java项目中添加jar包
    BNR Android Demo学习笔记(一)——CrimeIntent
    Android高仿微信(一)——如何消除启动时的白屏
    Swift2.1 语法指南——高级操作符
    Swift2.1 语法指南——访问控制
    Swift2.1 语法指南——泛型
    Swift2.1 语法指南——协议
  • 原文地址:https://www.cnblogs.com/ericz2j/p/10519678.html
Copyright © 2011-2022 走看看