`

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

    博客分类:
  • java
阅读更多
Java集合的Stack、Queue、Map的遍历

在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack、Queue、Map类型的遍历,还是有一些讲究的。

最近看了一些代码,在便利Map时候,惨不忍睹,还有一些是遍历错误,忽略了队列、栈与普通Collection的差别导致的,这些代码就不作为反面教材了。

下面是常用的写法:

一、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());
                }
        }
}
-------1-----
0
1
2
3
4
-------2-----
0
1
2
3
4

Process finished with exit code 0
三、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());
//                }
        }
}
0
1
2
3
4
------1-----
4
3
2
1
0
------2-----

Process finished with exit code 0

在遍历集合时候,优先考虑使用foreach语句来做,这样代码更简洁些。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java集合面试问题

    Java集合主要包括两大接口:`Collection` 和 `Map`。 #### Collection接口: - **特点**:它代表一个元素列表,可以包含重复的元素,并且没有固定的顺序。 - **主要实现类**: - **List**:有序集合,允许重复元素...

    Java集合类详解总结

    Java集合框架主要包括`Collection`、`Set`、`List`、`Queue`、`Deque`、`Map`等接口和它们的具体实现类如`ArrayList`、`LinkedList`、`Vector`、`Stack`、`HashSet`、`HashMap`等。下面将对这些核心概念和类进行深入...

    JAVA基础集合代码

    在Java编程语言中,集合框架是处理对象组的重要工具,它提供了一种高效...总的来说,Java集合框架提供了丰富的选择,满足了各种数据存储和操作的需求。通过深入理解和熟练应用,开发者可以写出更加高效、可维护的代码。

    30个Java经典的集合面试题!.pdf

    Java集合框架的基础接口有Collection、Set、List、Map、Queue、Dequeue、SortedSet、SortedMap和ListIterator等。 5. 为何Collection不从Cloneable和Serializable接口继承? Collection接口指定一组对象,对象即为...

    数据结构和Java集合框架

    Java集合框架主要包括两大接口:Collection和Map。Collection接口是所有单值容器的超接口,它的子接口有List(有序、可重复元素,如ArrayList和LinkedList)和Set(无序、不可重复元素,如HashSet和TreeSet)。List...

    java集合与映射(牛)

    Java集合框架主要包括两种类型的容器:集合(Collection)和映射(Map)。其中集合用于存储一组不重复的对象,而映射则用于存储键值对。 #### 二、集合(Collection) Java中的集合框架主要包括以下几种类型的集合...

    全面接触java集合框架(word版)

    Java集合框架是Java编程语言中的一个核心特性,它为存储、管理和操作对象提供了一套统一的接口和实现。这个框架包括各种接口、类和算法,使得开发者能够更加高效地处理对象集合,而无需关注底层数据结构的实现细节。...

    JAVA中的集合和js中集合

    为了方便遍历集合中的元素,Java集合框架提供了迭代器接口`Iterator`,它定义了遍历集合的基本方法:`hasNext()`判断是否还有下一个元素;`next()`返回集合中的下一个元素;`remove()`移除当前的元素。此外,对于`...

    Java Methods-The Java Collections Framework.ppt

    集合框架提供了多种集合类,例如 ArrayList、LinkedList、Stack、Queue、PriorityQueue、Set、TreeSet、HashSet 等。每个集合类都提供了特定的实现方式和优化算法,以满足不同的应用场景。 Map 接口 Map 是一种...

    java入门练习

    7. **集合**:Java集合框架是处理对象组的工具,包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。集合框架允许我们高效地存储、检索和操作对象,是Java编程中的核心部分...

    JAvaOOp06 第六章 集合框架.pdf|06 第六章 集合框架.pdf

    Java集合框架是Java编程语言中一个非常重要的组成部分,它为数据存储、管理和操作提供了丰富的类库。本章将深入探讨Java集合框架的核心概念、接口和类,以及它们在实际编程中的应用。 首先,集合框架的基础是接口,...

    Java集合源码全面分析

    4. **Iterator和Enumeration**:`Iterator`是Java集合框架中用于遍历Collection的主要接口,而`Enumeration`是旧的迭代方式,主要用于`Hashtable`、`Vector`和`Stack`。`ListIterator`是专为List设计的迭代器,支持...

    j2se集合课件是java的基础课程章节之一

    Java集合框架还包含了Queue(队列)、Deque(双端队列)、Stack(栈)等接口和实现,例如LinkedList可以作为双端队列使用,ArrayDeque作为高效栈和队列,PriorityQueue实现了优先队列,能根据元素的优先级进行出队。...

    超全Java集合框架讲解.md

    ### 超全Java集合框架讲解 #### 集合框架总览 Java集合框架是Java编程语言中处理数据结构的基础。它为开发者提供了一系列高度优化的数据存储与操作方法,使得开发者可以更加专注于业务逻辑而无需担心底层实现细节...

    图的邻接表存储及遍历(JAVA)

    本文将深入探讨图的邻接表存储方式以及如何用Java进行遍历。 一、邻接表的概念 邻接表是图的一种常见存储方式,它为每个顶点维护一个列表,列表中包含了与该顶点相连的所有边。相比于邻接矩阵,邻接表在处理稀疏图...

    Java集合类的详细介绍

    ### Java集合类详解 #### 一、集合框架概述 Java集合框架是Java平台的一个核心特性,为开发人员提供了丰富的数据结构实现。集合框架主要包括两大接口:`Collection` 和 `Map`。`Collection` 用于存储单个对象的...

Global site tag (gtag.js) - Google Analytics