java 栈与队列
来源:互联网 发布:下载51vv软件 编辑:程序博客网 时间:2024/05/21 17:16
例子参照:http://www.cnblogs.com/linjiqin/archive/2013/09/06/3305906.html
1:栈
手枪的弹夹,先进后出;在栈顶进行数据的插入与删除;
package com.xxx.cn;
import java.util.LinkedList;
/**
* 用linklist实现栈 栈先进后出
* @author yangwangang
*
*/
public class TestLinkList<T> {
private LinkedList<T>list = new LinkedList<T>();
//入栈
public void push(T t){
list.addFirst(t);
}
//出栈不删除
public T peek(){
return list.getFirst();
}
//出栈删除
public T pop(){
return list.removeFirst();
}
public boolean isEmpty(){
return list.isEmpty();
}
public String toString(){
return list.toString();
}
}
就像简介客服专线,当所有客服都在忙(队列满了),那么阻塞等待,空闲的客服。阻塞的过程;
package com.xxx.cn;
import java.util.LinkedList;
import java.util.Queue;
/**
* 队列 先进先出
*
* @author yangwangang
*
*/
public class TestQueue<T> {
private Queue<T>queue = new LinkedList<T>();
// 将数据插入队尾
public void offer(T t) {
queue.offer(t);
}
// 返回队列的头,如果队列为空,返回null 不移除
public T peek() {
return queue.peek();
}
// 返回队列的头,如果队列为空,抛出异常 不移除
public T element() {
return queue.element();
}
// 移除返回队列的头,如果队列为空返回null
public T poll() {
return queue.poll();
}
// 移除返回队列的头,如果队列为空抛出异常
public T remove() {
return queue.remove();
}
// 队列是否为空
publicboolean empty() {
return queue.isEmpty();
}
}
3:Queue:
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接 口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Queue接口。
队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。下表显示了jdk1.5中的阻塞队列的操作:
3:Collection 接口有两个接口,list与set接口;
list(列表)实现类:array list(数组实现,查询块), linked list(双向链表实现,增删改快), vector(类似array list 线程同步);
set(集合)实现类:HashSet(无序,无重复,希策略来实现,底层通过hash map实现),linkedhashset(有序,无重复,双向链表实现,底层使用linkedhashmap实现);
map(映射),与collection接口没有多大的卵关系;map是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象;
参考:http://blog.csdn.net/speedme/article/details/22398395
- java 栈与队列
- java 栈与队列 使用
- 栈与队列->队列
- 《栈 队列》——栈与队列(Java)
- 栈与队列之用java实现队列
- Java数据结构和算法--栈与队列
- Java数据结构和算法--栈与队列
- Java数据结构和算法--栈与队列
- java中栈与队列的实现
- java实现链栈与队列
- Java数据结构04 栈与队列
- Java线程:堵塞队列与堵塞栈
- Java数组实现顺序栈与队列
- 二.Java栈与队列的实现:
- java堆栈与队列
- JAVA多线程与队列
- java队列与堆栈
- java阻塞队列与非阻塞队列
- python编码问题
- [Lintcode] Unique Paths I,II
- 算法与数据结构(JAVA)-排序算法总结
- 【C++】输出格式
- [POJ1655]Balancing Act(树形dp)
- java 栈与队列
- hadoop完全分布式集群安装
- iOS动画解析
- android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
- Golang tls 链接通信
- C语言动态分配一维数组
- AYITACM2016省赛第二周(dp+其他) A-雷达装置(区间选点问题)
- HDOJ 5120-Intersection【几何数学】
- Android Studio使用过程中那些事儿(持续更新)