关于集合(list,set,map)的遍历与增强for循环的使用

 
 

java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型集合。

     许多情况需要我们遍历出集合中的元素,并做相应的处理。
     下面对各种类型的集合的遍历做一些总结,关于增强for循环,需要注意的是,使用增强for循环无法访问数组下标值,对于集合的遍历其内部采用的也是Iterator的相关方法。如果只做简单遍历读取,增强for循环确实减轻不少的代码量。
关于List与Set类型集合的遍历:
[java] 
import java.util.ArrayList;  
import java.util.HashSet;  
import java.util.Iterator;  
import java.util.List;  
import java.util.Set;  
  
public class ListAndSetTest {  
  
    public static void main(String[] args) {  
        // List集合的遍历  
        listTest();  
        // Set集合的遍历  
        setTest();  
    }  
  
    private static void setTest() {  
        Set<String> set = new HashSet<String>();  
        set.add("JAVA");  
        set.add("C");  
        set.add("C++");  
        // 重复的加不进去。  
        set.add("JAVA");  
        set.add("JAVASCRIPT");  
  
        //set集合遍历方法1,使用iterator  
        Iterator<String> it = set.iterator();  
        while (it.hasNext()) {  
            String value = it.next();  
            System.out.println(value);  
        }  
          
        //set集合遍历方法2,使用增强for循环。  
        for(String s: set){  
            System.out.println(s);  
        }  
    }  
  
    // 遍历list集合  
    private static void listTest() {  
        List<String> list = new ArrayList<String>();  
        list.add("java111");  
        list.add("java222");  
        list.add("java333");  
        list.add("java444");  
        list.add("java555");  
  
        // 遍历方式1 ,使用iterator  
        Iterator<String> it = list.iterator();  
        while (it.hasNext()) {  
            String value = it.next();  
            System.out.println(value);  
        }  
  
        // 遍历方法2 , 使用传统for循环进行遍历。  
        for (int i = 0, size = list.size(); i < size; i++) {  
            String value = list.get(i);  
            System.out.println(value);  
        }  
  
        // 遍历方法3 , 使用增强for循环进行遍历。  
        for (String value : list) {  
            System.out.println(value);  
        }  
    }  
}  
 
关于Map类型集合的遍历,keySet()与entrySet()方法:
[java] view plaincopy
//增强For循环  
public class MapTest {  
  
    public static void main(String[] args) {  
        // 创建一个HashMap对象,并加入了一些键值对。  
        Map<String, String> maps = new HashMap<String, String>();  
        maps.put("111", "java111");  
        maps.put("222", "java222");  
        maps.put("333", "java333");  
        maps.put("444", "java444");  
        maps.put("555", "java555");  
          
        // 传统的遍历map集合的方法1; keySet()  
        //traditionalMethod1(maps);  
        // 传统的遍历map集合的方法2; entrySet()  
        //traditionalMethod2(maps);  
        // 使用增强For循环来遍历map集合方法1; keySet()  
        //strongForMethod1(maps);  
        // 使用增强For循环来遍历map集合方法2; entrySet()  
        strongForMethod2(maps);  
    }  
  
    private static void strongForMethod2(Map<String, String> maps) {  
        Set<Entry<String, String>> set = maps.entrySet();  
        for (Entry<String, String> entry : set) {  
            String key = entry.getKey();  
            String value = entry.getValue();  
            System.out.println(key + " : " + value);  
        }  
    }  
  
    private static void strongForMethod1(Map<String, String> maps) {  
        Set<String> set = maps.keySet();  
        for (String s : set) {  
            String key = s;  
            String value = maps.get(s);  
            System.out.println(key + " : " + value);  
        }  
    }  
  
    // 使用entrySet()方法,获取maps集合中的每一个键值对,  
    private static void traditionalMethod2(Map<String, String> maps) {  
        Set<Map.Entry<String, String>> sets = maps.entrySet();  
        // 取得迭代器遍历出对应的值。  
        Iterator<Entry<String, String>> it = sets.iterator();  
        while (it.hasNext()) {  
            Map.Entry<String, String> entry = (Entry<String, String>) it.next();  
            String key = entry.getKey();  
            String value = entry.getValue();  
            System.out.println(key + " : " + value);  
        }  
    }  
  
    // 使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值。  
    private static void traditionalMethod1(Map<String, String> maps) {  
        Set<String> sets = maps.keySet();  
        // 取得迭代器遍历出对应的值。  
        Iterator<String> it = sets.iterator();  
        while (it.hasNext()) {  
            String key = it.next();  
            String value = maps.get(key);  
            System.out.println(key + " : " + value);  
        }  
    }  
}  

java容器的一些存取用法的更多相关文章

  1. Java容器集合类的区别用法

    Set,List,Map,Vector,ArrayList的区别 JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayList │└ ...

  2. Java 容器在实际项目开发中应用

    前言:在java开发中我们离不开集合数组等,在java中有个专有名词:"容器" ,下面会结合Thinking in Java的知识和实际开发中业务场景讲述一下容器在Web项目中的用 ...

  3. Java 容器在实际项目中的应用

    前言:在java开发中我们离不开集合数组等,在java中有个专有名词:"容器" ,下面会结合Thinking in Java的知识和实际开发中业务场景讲述一下容器在Web项目中的用 ...

  4. Java 容器系列总结

    为什么要使用集合 当我们需要保存一组类型相同的数据的时候,我们应该是用一个容器来保存,这个容器就是数组,但是,使用数组存储对象具有一定的弊端, 因为我们在实际开发中,存储的数据的类型是多种多样的,于是 ...

  5. 3)Java容器

    3)Java容器   Java的集合框架核心主要有三种:List.Set和Map.这里的 Collection.List.Set和Map都是接口(Interface). List lst = new ...

  6. 工作随笔—Java容器基础知识分享(持有对象)

    1. 概述 通常,程序总是运行时才知道的根据某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型,为解决这个普遍的编程问题:需要在任意时刻和任意位置创建任意数量的对象,所以,就 ...

  7. Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本

    Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本 前言 序言 再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点. 适合阅读人群 J ...

  8. Java中stream的详细用法

    来自于:Java 8 stream的详细用法_旅行者-CSDN博客_java stream 一.概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行 ...

  9. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

随机推荐

  1. CentOS7 下 安装 supervisor以及使用

    CentOS7 下 安装 supervisor 以及使用 手动安装 [注] linux环境必须安装 python 1.获取supervisor包:[https://pypi.python.org/py ...

  2. django开发过程中静态文件路径配置

    在demo项目的settings.py文件中找到 STATICFILES_DIRS STATICFILES_DIRS = ( 'static', #这个名字是项目根目录下的文件夹名称,注意后面有逗号 ...

  3. 实时控制软件设计 第一次作业 Draw

    #include <iostream> #include <cstring> #include <math.h> #include <Eigen/Dense& ...

  4. Kruskal算法

    1.基本思想:设无向连通网为G=(V, E),令G的最小生成树为T=(U, TE),其初态为U=V,TE={ },然后,按照边的权值由小到大的顺序,考察G的边集E中的各条边.若被考察的边的两个顶点属于 ...

  5. (转)CSS中的绝对定位与相对定位定位

    层级关系为: <div ——————————— position:relative; 不是最近的祖先定位元素,不是参照物<div—————————-没有设置为定位元素,不是参照物<d ...

  6. 安装和使用Visual Studio 2013并进行简单的单元测试

    现在我正在安装visual studio 2013,我听说好多同学都在安装visual studio 2015,但是他好像只支持Win10吧,我就退而求其次安装了visual studio 2013. ...

  7. Tomcat version 7.0 only support J2EE 1.2。。。。。。。

    刚开始使用eclipse编程,换了eclipse版本后导入项目,出现下的报错

  8. C#基础——静态成员,static关键字

    当声明一个类成员为静态时,意味着无论创建多少个类的对象,只会有一个该静态成员的副本. 关键字static意味着只有一个该成员的实例.静态变量用于定义常量,因为它们的值可以通过直接调用类而不需要创建类的 ...

  9. PPT设计宝典!十招教你做出拿得出手的PPT

    据说上班用 excel 的比 word 的工资高,用 ppt 的比用 excel 的工资高.无论如何,在职场演讲汇报中,PPT 扮演着至关重要的角色. 在本文我们将用 10 个超级技巧来解决糟糕的演示 ...

  10. git format-patch & git apply & git clean

    一.打补丁 git format-patch & git apply 最近在工作中遇到打补丁的需求,一来觉得直接传文件有些low(而且我尝试了一下,差点把项目代码毁了) ,二来也是想学习一下, ...