一、单向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