Map stack和Queue -java
来源:互联网 发布:基于java的oa审批流程 编辑:程序博客网 时间:2024/05/21 12:46
Stack(堆栈)是一种后进先出的模式,只能在栈头进行插入与删除操作。
Queue(队列)是一种先进先出的模式,只能在队尾进行插入,在队头进行删除。
stack堆栈,没有迭代器,支持push()方法。后进先出,top()返回最顶端的元素,pop()剔除最顶元素
deque双端队列,支持迭代器,有push_back()方法,跟vector差不多,比vector多了个pop_front,push_front方法
queue队列,先进先出,不支持迭代器,有push()方法,pop()剔除第一个元素,front()返回第一个元素
不管是是队列还是堆栈,都可以采用数组或者链表的方式来是实现。
1.Java集合框架里存在Queue这个接口,之后有不同类型的队列的实现。有Stack这个类实现堆栈,其实这个类是通过继承Vector的方式来实现的,Vector和ArrayList的实现方式差不多,只不过Vector里的方法是线程安全的。
2.对LinkedList的分析,我已经说过,这个类实现了双端队列的接口,因此可以把LinkedList当作队列或这堆栈来使用,分别使用相应的方法即可。
3.至于优先队列的实现方式
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* Map的遍历,这个遍历比较特殊,有技巧
*
* @author leizhimin 2009-7-22 15:15:34
*/
public class TestMap {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
//最简洁、最通用的遍历方式
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
//Java5之前的比较简洁的便利方式1
System.out.println("----1----");
for (Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, String> entry = it.next();
System.out.println(entry.getKey() + " = " + entry.getValue());
}
//Java5之前的比较简洁的便利方式2
System.out.println("----2----");
for (Iterator<String> it = map.keySet().iterator(); it.hasNext();) {
String key = it.next();
System.out.println(key + " = " + map.get(key));
}
}
}
2. Queue的遍历
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;
/**
* 队列的遍历
*
* @author leizhimin 2009-7-22 15:05:14
*/
public class TestQueue {
public static void main(String[] args) {
Queue<Integer> q = new LinkedBlockingQueue<Integer>();
//初始化队列
for (int i = 0; i < 5; i++) {
q.offer(i);
}
System.out.println("-------1-----");
//集合方式遍历,元素不会被移除
for (Integer x : q) {
System.out.println(x);
}
System.out.println("-------2-----");
//队列方式遍历,元素逐个被移除
while (q.peek() != null) {
System.out.println(q.poll());
}
}
}
3.Stack的遍历
import java.util.Stack;
/**
* 栈的遍历
*
* @author leizhimin 2009-7-22 14:55:20
*/
public class TestStack {
public static void main(String[] args) {
Stack<Integer> s = new Stack<Integer>();
for (int i = 0; i < 10; i++) {
s.push(i);
}
//集合遍历方式
for (Integer x : s) {
System.out.println(x);
}
System.out.println("------1-----");
//栈弹出遍历方式
// while (s.peek()!=null) { //不健壮的判断方式,容易抛异常,正确写法是下面的
while (!s.empty()) {
System.out.println(s.pop());
}
System.out.println("------2-----");
//错误的遍历方式
// for (Integer x : s) {
// System.out.println(s.pop());
// }
}
}
在遍历集合时候,优先考虑使用foreach语句来做,这样代码更简洁些。
- Map stack和Queue -java
- Java 集合 Stack、Queue、Map插入、移除和遍历
- java vector,list,map,stack,queue
- java中的stack和queue
- Java集合的Stack、Queue、Map的遍历
- Java集合的Stack、Queue、Map的遍历
- Java集合的Stack、Queue、Map的遍历
- Java集合的Stack、Queue、Map的遍历
- Java集合的Stack、Queue、Map的遍历
- Java集合的Stack、Queue、Map的遍历
- Java集合的Stack、Queue、Map的遍历
- Java集合的Stack、Queue、Map的遍历
- Java集合的Stack、Queue、Map的遍历
- Java:常用集合类(List、Map、Set、Queue、Stack)
- JAVA Map、Set、List、Queue、Stack的特点与用法
- java 集合(set、list、map、stack、queue)的用法
- Java集合的Stack、Queue、Map的遍历
- Java集合的Stack、Queue、Map的遍历
- 存储过程与触发器
- 网关和子网掩码概念
- 你就可以在这项计划中
- LeetCode – Two Sum (Java) —题解
- (蓝桥杯)历届试题 蚂蚁感冒 (思维题)
- Map stack和Queue -java
- 转自一位学长的日志安排
- Leetcode 第一题 Two Sum java代码
- Java中@Override的作用
- Period (HDU_1358) KMP+循环节
- JavaWeb开发之十三:Javabean
- 单链表建环
- 51nod 1225 余数之和
- 第五周项目5-用递归方法求解(2)