• 七、其他容器先进先出FIFO和后进先出LIFO


    一、单向queue

    package mypro02;
    
    import java.util.ArrayDeque;
    import java.util.Queue;
    //银行存款业务先进先出,使用队列进行模拟
    public class Demo01 {
        public static void main(String[] args) {
            Queue<Request>  req=new ArrayDeque<Request>();
            
            for(int i=1;i<10;i++) {
                final int num=i;
                req.offer(new Request() {
                    
                    @Override
                    public void depoist() {
                        System.out.println("第"+num+"个人,办理存款业务,存款额度"+Math.random()*10000+"\n");
                        
                    }
                });
            }
            dealWith(req);
            
        }
        
        public static void dealWith(Queue<Request> req) {
            Request rest=null;
            while(null!=(rest=req.poll())) {
                rest.depoist();
            }
        }
    }
    
    interface Request{
        void depoist();
    }
    结果:
    第1个人,办理存款业务,存款额度7822.752693395061
    
    第2个人,办理存款业务,存款额度6971.766228690278
    
    第3个人,办理存款业务,存款额度1428.8843469173419
    
    第4个人,办理存款业务,存款额度3344.700095565317
    
    第5个人,办理存款业务,存款额度8688.191911991726
    
    第6个人,办理存款业务,存款额度7940.423761207943
    
    第7个人,办理存款业务,存款额度6974.639104370477
    
    第8个人,办理存款业务,存款额度5022.743742987783
    
    第9个人,办理存款业务,存款额度1770.541653348493

    二、双向操作(模拟堆栈,后进先出LIFO)

    package mypro02;
    /*
     * 使用队列实现自定义堆栈
     * 
     */
    
    import java.util.ArrayDeque;
    import java.util.Deque;
    
    public class MyStack<E> {
        private Deque<E>  container=new ArrayDeque<E>();
        private int cap;
        public MyStack(int cap) {
            super();
            this.cap=cap;
        }
        //压栈
        public boolean push(E e) {
            if(container.size()+1>cap) {
                return false;
            }
            
            
                return container.offerLast(e);
            
        }
        //弹栈
        public E pop() {
            return container.pollLast();
        }
        //获取
        public E peek() {
            return container.peekLast();
        }
        
        public  int size() {
            
            return container.size();
        }
        
    }
    package mypro02;
    
    public class MyStackDemo01 {
        public static void main(String[] args) {
            MyStack<String>  mystack=new MyStack<String>(3);
            
            mystack.push("中国");
            mystack.push("日本");
            mystack.push("香港");
            mystack.push("中国2");
            System.out.println(mystack.size());
            
            String item=null;
            while(null!=(item=mystack.pop())) {//pop将最后一个弹出去
                System.out.println(item);
                System.out.println(mystack.peek()); //获取队列中的最后一个值
            }
        }
    }
    结果:
    3
    香港
    日本
    日本
    中国
    中国
    null
  • 相关阅读:
    初识sql语句
    IO模型比较分析
    select,poll,epoll,selectors
    多路复用IO
    非阻塞IO
    yield-from示例
    阻塞IO(blocking IO)
    IO模型介绍
    gevent实现套接字
    gevent异步,io自动切换
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/16064809.html
Copyright © 2020-2023  润新知