Queue接口
1.英文
a) Queue 队列
b) Deque ,Double ender queue缩写,双向队列
2.Queue接口
除了基本的 Collection
操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。
方法摘要 | |
boolean | add(E e) |
element() | |
boolean | offer(E e) |
peek() | |
poll() | |
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(); }
模拟银行排序代码