1 简图:
2 使用ArrayDeque队列模拟银行排队效果:
package Quene;
import java.util.ArrayDeque;
import java.util.Queue;
public class BackPosite {
public static void main(String[] args) {
Queue<Man> que = new ArrayDeque<Man>();
for(int i=0; i<10; i++){
final int num = i;
que.offer(new Man(){ // 数据进入队列尾巴
@Override
public void deposit() {
System.out.println("第" + num + "个人,办理存款业务,存款金额为: " + Math.random()*100 + "元");
}
});
}
dealWith(que);
}
private static void dealWith(Queue<Man> que) {
Man man;
while( (man = que.poll()) != null){ // 从队列头获取数值 并移除这个头对象
man.deposit();
}
}
}
interface Man {
void deposit();
}
3 使用队列ArrayDeque 模拟堆栈效果:‘
package com.bjsxt.others.que;
import java.util.ArrayDeque;
import java.util.Deque;
/**
* 使用队列实现自定义堆栈
* 1、弹
* 2、压
* 3、获取头
* @author Administrator
*
* @param <E>
*/
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 this.container.size();
}
}
package com.bjsxt.others.que;
//测试自定义堆栈 后进先出
public class Demo02 {
/**
* 结果:
* 大小:3
www.sina.com
www.google.com
www.baidu.com
*/
public static void main(String[] args) {
MyStack<String> backHistory =new MyStack<String>(3);
backHistory.push("www.baidu.com");
backHistory.push("www.google.com");
backHistory.push("www.sina.com");
backHistory.push("www.youku.cn"); // 定义堆栈为3长度 这里在添加添加不进去
System.out.println("大小:"+backHistory.size()); // 结果为3
//遍历
String item=null;
while(null!=(item=backHistory.pop())){
System.out.println(item);
}
}
}