七、其他容器--先进先出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

 

posted @ 2022-03-27 22:03  小熊尤里  阅读(91)  评论(0编辑  收藏  举报