zoukankan      html  css  js  c++  java
  • Java_Queue接口

     

    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();
    
    }
    模拟银行排序代码
  • 相关阅读:
    在WPF中判断是是否为设计时模式(转)
    后缀数组小结
    运算符重载,输出流运算符重载
    ZOJ 3699
    米勒罗宾大素数测定
    FZU 2109 Mountain Number 数位DP
    考试复习
    java文件输入输出
    纯虚函数与抽象类
    转载:stream iterators C++ 用法
  • 原文地址:https://www.cnblogs.com/aihuadung/p/9326033.html
Copyright © 2011-2022 走看看