Queue接口

  1.英文

    a)         Queue 队列

    b)         Deque ,Double ender queue缩写,双向队列

  2.Queue接口

     除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(nullfalse,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。

方法摘要

boolean

add(E e)
          将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出
IllegalStateException。

E

element()
          获取,但是不移除此队列的头。

boolean

offer(E e)
          将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。

E

peek()
          获取但不移除此队列的头;如果此队列为空,则返回 null。

E

poll()
          获取并移除此队列的头,如果此队列为空,则返回 null。

E

remove()
          获取并移除此队列的头。

  3.通过Queue实现类提供的方法来创建自定义堆栈 

    

package com.ahd.queue;

import java.util.ArrayDeque;

import java.util.Deque;

import java.util.Queue;

/***

 * 自定义堆栈

 * @author Administrator

 *

 */

public class MyStack<E>{

         private int size=0;

         private int cap;

         private Deque<E>deque;

         public MyStack() {

                   super();

                   deque=new ArrayDeque<E>();

         }

//public 方法里面不可以使用private ,非法语法

         public MyStack(int cap) {

                   super();

                   this.cap = cap;

                   deque=new ArrayDeque<E>();

         }

         public void setCap(int cap) {

                   this.cap = cap;

         }

         //push 添加 入栈

         public boolean push(E e){

                   if(this.deque.size()+1>cap){

                            return false;

                   }

                   return deque.offerLast(e);

         }

         //poll 移除并获取

         public E poll(){

                   return deque.pollLast();

         }

         //peek 不移除并获取

         public E peek(){

                   return deque.peekLast();

         }

         //size

         public int size(){

                   return this.deque.size();

         }

}

自定义堆栈

  4.模拟银行排序(使用队列先进先出的特点)

    

package com.ahd.queue;

import java.util.ArrayDeque;

import java.util.Queue;

public class QueueDemo {

         public static void main(String[] args) {

                   Queue<request> q=new ArrayDeque<request>();

                   for(int i=0;i<10;i++){

                            //匿名内部类不能调用外部类for的变量,用final修饰

                            final int num=i;

                            q.offer(new request(){

                                     @Override

                                     public void deposit() {

                                               // TODO Auto-generated method stub

                                               System.out.println("第"+num+"人正在办理业务,请稍后");

                                     }

                            });

                   }

                   dealwith(q);

         }

         //出队列,测试先进先出

         public static void dealwith(Queue q){

                   request res=null;

                   while(null!=(res=(request) q.poll())){

                            res.deposit();

                   }

         }

}

//定义一个接口

interface request{

         public void deposit();

}

模拟银行排序代码

05-10 23:41