队列中的Queue与Deque
来源:互联网 发布:男烟女烟区别知乎 编辑:程序博客网 时间:2024/05/25 19:59
队列分单向队列和双向队列,单向队列从一端操作使用Queue接口,双向队列从两端操作使用Deque接口。
Queue接口: 抛出异常的方法有add(),remove(),element()获取。
返回特殊值的方法:offer(),poll(),peek()。
Deque接口 : 从头操作与从尾操作,与Queue接口其实大同小异
下面我们首先用单向队列实现一个排队到银行存款的业务。
import java.util.ArrayDeque;
import java.util.Queue;
public class Demo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//System.out.println("123");
Queue<Request> que=new ArrayDeque<Request>();
for(int i=1;i<=10;i++)
{
final int num=i;
que.offer(new Request(){
@Override
public void dopost() {
// TODO Auto-generated method stub
System.out.println("第"+num+"个人,存款"+Math.random()*1000);
}
});
}
dealWith(que);
}
public static void dealWith(Queue<Request> que)
{
Request req=null;
while(null!=(req=que.poll()))
{
req.dopost();
}
}
}
interface Request{
void dopost();
}
这个例子有几点值得说一说:
1.匿名内部类只能引用final变量
2.Queue实现的对象的poll与offerfangfa
下面再来看一个用双向队列实现的堆栈,并用我们自己创建的堆栈类模拟下浏览记录的前进与后退
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 this.container.size();
}
}
首先说说这个堆栈类,我们都知道堆栈和队列的区别在于它先进后出。其实堆栈的实现只需要关心3点,压栈,弹栈,获取头。
我们用一个测试类测了看看
public class Demo02 {
public static void main(String[] args) {
// TODO Auto-generated method stu
MyStack<String> BackHistory=new MyStack<String>(3);
BackHistory.push("baidu");
BackHistory.push("baidu2");
BackHistory.push("baidu3");
BackHistory.push("baidu4");
System.out.println(BackHistory.size());
String item =null;
while(null!=(item=BackHistory.pop()))
{
System.out.println(item);
}
}
}
可以发现其先进后出的特点,并且只能存3个
- 队列中的Queue与Deque
- Queue与Deque队列和自定义堆栈
- 阻塞队列Queue/Deque/condition
- Java Queue 和 Deque队列
- Queue与Deque接口
- 队列Queue、双端队列Deque
- Java队列Queue、双端队列Deque
- java队列Queue、双端队列Deque
- 队列Queue、双端队列Deque
- 队列Queue、双端队列Deque
- Java中的queue和deque
- java 中的Stack、Queue、Deque
- Java中的queue和deque
- Java 队列 Queue、Deque、AbstractQueue 源码分析
- 队列queue和deque和priority_queue
- java队列(queue & deque)方法简介
- python基础-namedtuple、queue队列、deque双向队列
- STL中的deque介绍--- double-ended queue
- 一次位运算疑惑
- 阿里巴巴常考面试题及汇总答案
- java8 lambda表达式
- dpkg用法
- win7上的python脚本无法连接运行在virtualbox上的mongodb
- 队列中的Queue与Deque
- 安卓中进行基于Http协议的网络访问基础总结-1
- bzoj2152 聪聪可可
- POJ 1080 DP
- Java中线程同步锁和互斥锁(锁机制)-多线程编程
- [Android]使用AIDL进行进程间通信
- GridView-网格布局案例
- The Definitive Antlr 4 第5章学习笔记
- bzoj1468 Tree