`
wenjinglian
  • 浏览: 806036 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

Java集合的Stack、Queue、Map的遍历

    博客分类:
  • JAVA
阅读更多
Java集合的Stack、Queue、Map的遍历
 
在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack、Queue、Map类型的遍历,还是有一些讲究的。
下面是常用的写法:
 
一、Map的遍历
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));
                }
        }
}
 3 = c
2 = b
1 = a
----1----
3 = c
2 = b
1 = a
----2----
3 = c
2 = b
1 = a

Process finished with exit code 0


二、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());
                }
        }
}
 

三、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语句来做,这样代码更简洁些。

并且推荐使用foreach

分享到:
评论

相关推荐

    数据结构图的遍历及拓扑排序

    void dfs(linkmap *maps,int i)//i用来指定深度优先遍历的起始值 { edgenode *pp; printf("%c",maps-&gt;maplist[i].element); v[i]=1; pp=maps-&gt;maplist[i].firstedge; while(pp) { if(!v[pp-&gt;adress]) ...

    leetcode答案-myDataStructure:我的数据结构

    BinaryTree遍历(用map实作) BST(实作insert, predecessor, successor) Augmented_BST(扩充的BST,实作exists(判断key是否存在), insert, predecessor, successor, rank(给key求排名), select(给排名求key)) AVL tree...

    lrucacheleetcode-beihu-leetcode:力扣算法

    Stack LinkedList Queue/PriorityQueue(heap) Set/Disjoint Set Map/HashTable Tree/Binary Search Tree/Spanning tree Trie 字母树 BloomFilter LRU Cache 算法 Sorting 排序算法 Graph 图 Hashing 哈希 Greedy ...

    C++进阶课程讲义_v1.0.4.pdf

    10.2.9Map和multimap容器 118 10.2.10容器共性机制研究 123 10.2.11其他 124 10.3算法 125 10.3.1算法基础 125 10.3.2STL算法中函数对象和谓词 138 10.3.3常用的遍历算法 148 10.3.4常用的查找算法 152 10.3.5常用的...

    StructuresandAlgorithms-Code:重温数据结构与算法,代码实践

    stack & queue 栈、队列 知识点 栈 队列 双端队列 优先队列:堆结构的实现 经典题 括号匹配 表达式求值(中缀表达式转后缀表达式) 队列-层次遍历 栈实现队列、队列实现栈 双端队列-返回滑动窗口的最大值 小顶堆-返回...

    基于Python实现的数据结构与算法完整源代码+超详细注释(包含46个作业项目).zip

    03_python实现ADT Stack 04_栈的应用1括号匹配 05_栈的应用2十进制转二进制 06_栈的应用3中缀转后缀表达式 07_栈的应用4后缀表达式求值 08_python实现ADT Queue 09_队列的应用1约瑟夫问题 10_队列的应用2打印任务 11...

    标准模板库STL

    STL容器部分主要由头文件、、、、&lt; map&gt;、&lt;stack&gt;和&lt;queue&gt;组成。 (2)算法(Algorithms)。包括各种基本算法,如比较、交换、查找、排序、遍历操作、复制、修改、移除、反转、合并等等。 STL算法部分主要由...

    leetcode双人赛-leetcode-complete:单页上的LeetCode解决方案,还有更多!

    Stack, Queue, 或者返回值特别复杂, 或者需要大量拼接字符串时, 使用 C++。 这份文档的目的是复习用的,并不是教如何解题的,因此只有简略介绍,适合面试前查漏补缺复习。 Let the hack begin! 从数组中找出两个数字...

    javaSE代码实例

    14.6.9 使用for-each循环遍历集合 300 14.7 映射集 301 14.7.1 Map接口及含义 301 14.7.2 HashMap类的使用 302 14.7.3 Hashtable类的使用 303 14.7.4 LinkedHashMap类的使用 304 14.7.5 SortedMap接口...

    传智播客扫地僧视频讲义源码

    本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...

    C++STL程序员开发指南【可搜索+可编辑】

    本版本与网上其他资源不同之处在于,此版本可进行编辑,搜索,已进行内容识别扫描。可全选,可编辑,可剪切文字。 部分目录如下: 目录 第一篇预备知识 第1 章C++ 编程技术.........................................

Global site tag (gtag.js) - Google Analytics