JAVA复习【13】Map的三种遍历方法

方法一.Iterator迭代器遍历Map集合。
01 KeySet遍历
使用Iterator迭代器遍历Map集合,需要先将Map集合转换为Iterator接口对象,然后进行遍历,由于Map集合中元素是由键值对组成的,所以使用Iterator接口遍历Map集合,会有2中将Map集合转换为Iterator接口对象再进行遍历的方法,即KeySet()方法和entrySet()方法。
KeySet方法需要先将Map集合中所有键对象转换为Set单列集合,接着将包含键对象的Set集合转换为Iterator接口对象,然后遍历Map集合中所有的键,然后获取相应的值。

import java.util.*;
public class Iterator1{
    public static void main(string[]args]){
        Map map=new HashMap();
        map.put("1","Jack");
        map.put("2","Rose");
        map.put("3","Lucy");
        System.out.println(map);//{1=Jack,2=Rose,3=Lucy}    
        Set keySet=map.keySet();//获取键的集合
        Iterator it=keySet.iterator();//获取Iterator对象
        while(it.hasNext()){//判断是否结束,没结束就继续读
        Object key=it.next();
        Object value=map.get(key);//获取每个键所对于的值
        System.out.println(key+":"+value);//1:jack 2:Rose 3:Lucy                        
        }
    }
}

02 EntrySet遍历
Iterator迭代器遍历集合的另一种方式是使用entrySet()方法,该方法将原有Map集合中的键值对作为一个整体返回为Set集合,接着将包含键值对对象的Set集合转换为Iterator接口对象,然后获取集合中所有的键值对映关系,再从映射关系中取值。Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。 接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法.

import java.util.*;
public class Iterator2{
    public static void main(string[]args]){
        Map map=new HashMap();
        map.put("1","Jack");
        map.put("2","Rose");
        map.put("3","Lucy");
        System.out.println(map);//{1=Jack,2=Rose,3=Lucy}  
        Set entrySet=map.entrySet();
        Iterator it=entrySet.iterator();//获取Iterator对象
         while(it.hasNext()){
         Map.Entry entry=(Map.Entry)(it.next());//返回一个Map.Entry实例化后的对象集
         Object key=entry.getKey();//获取entry中的键
         Object value=entry.getValue();//获取entry中的值
        System.out.println(key+":"+value);//1:jack 2:Rose 3:Lucy    
        }
}
}

首先调用Map对象的entrySet()方法获得存储Map中所有键值映射的Set集合,这个集合中存放了Map.entry类型的元素(Entry是Map接口内部类),每个Map,Entry对象代表Map中的一个键值对,然后迭代Set集合,获得每一个映射对象,并分别调用映射对象的getKey()和getValue()方法获取键和值。
方法二.使用forEach(Biconsumer action)方法遍历Map集合
JDK8中新增了一个forEach方法来遍历Map集合,该方法所需要的参数也是一个函数式接口,因此可以使用lambda表达式的书写形式来进行集合遍历。

import java.util.*;
public class Iterator3{
    public static void main(string[]args]){
        Map map=new HashMap();
        map.put("1","Jack");
        map.put("2","Rose");
        map.put("3","Lucy");
        System.out.println(map);//{1=Jack,2=Rose,3=Lucy} 
        //使用forEach(Biconsumer action)方法遍历集合 
        map.forEach(key,value)->System.out.println(key+":"+value);//1:jack 2:Rose 3:Lucy    
        }
        }

使用forEach(Biconsumer action)方法对集合中的元素进行遍历,该方法传递的是一个lambda表达式书写的函数式接口BiConsumer.这个方法在执行时,会自动遍历集合元素的键和值,并将结果逐个传递给Lambda表达式的形参。
方法三.Values()方法遍历

import java.util.*;
public class Iterator1{
    public static void main(string[]args]){
        Map map=new HashMap();
        map.put("1","Jack");
        map.put("2","Rose");
        map.put("3","Lucy");
        System.out.println(map);//{1=Jack,2=Rose,3=Lucy} 
        Collection values=map.values();//获取Map集合中values值集合对象。
        values.forEach(v->System.out.println(v));//1:jack 2:Rose 3:Lucy
        }
        }

通过调用Map的values()方法获取包含Map中所有值的Collection集合,然后迭代出集合中的每一个值。
总结:
1.增强for使用方法,但速度慢
2.iterator速度比增强for快2~4倍
3.使用entrySet速度比keySet速度快约1.5倍

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用程序的运行机制 15 JVM(JAVA VIRTUAL MACHINE) 16 Java运行时环境JRE(Java Runtime Environment) 17 JAVA语言应用范围 18 第一个JAVA程序 18 JAVA开发环境搭建 18 一个典型的JAVA程序的编写和运行过程 19 第一个程序常见错误 20 第一个JAVA程序的总结和提升 20 常用Java开发工具 20 常用dos命令 21 本章笔试作业 21 本章上机操作 21 第二章(1) 编程的基本概念 22 注释 22 标识符 22 关键字/保留字 23 变量(variable) 24 常量(Constant) 25 命名规则(规范) 25 基本数据类型(primitive data type) 26 整型变量 26 浮点型 27 字符型(2个字节): 28 boolean类型 29 运算符(operator) 29 二元运算符 29 一元运算符 30 布尔逻辑表达符 30 位运算符 30 扩展运算符 31 字符串连接符 31 三目条件运算符 31 运算符优先级的问题 31 自动类型转换 32 基本类型转化时常见错误和问题 33 方法 33 简单的键盘输入和输出 33 本章思考作业 34 上机操作 34 第二章(2) 控制语句 35 顺序结构 35 选择结构 35 if单选择结构 35 if-else双选择结构 35 If-elseif-else多选择结构 36 switch多选择结构 37 循环结构 39 While和dowhile的区别 41 For循环 42 break语句和continue语句 47 语句块 48 递归结构 49 本章作业 50 本章上机操作 51 第三章 JAVA面向对象程序开发 52 编程语言发展史 52 类和对象是如何产生发展的?如何进化的? 52 面向对象思想初步(OOP初步Object Oriented Programming) 53 面向对象编程的语言的三大特征简介 56 对象和类的概念 56 类和对象初步 57 测试类的定义方式 57 简单的学生类编写示例 58 内存分析 59 属性(field,或者叫成员变量) 59 引用类型 60 类的方法 60 对象的创建和使用 60 构造器(或者叫做构造方法,constructor) 60 垃圾回收机制(Garbage Collection) 63 方法的重载(overload),构造方法的重载 63 this关键字 65 static 关键字 66 静态初始化块(经常用来初始化类,加载类信息时执行!) 67 package 68 JDK中的主要包 68 import 68 eclipse的使用 69 继承(extend, inheritance) 70 为什么需要继承?继承的作用? 70 继承介绍 70 如何实现继承? 70 继承使用要点 71 Object类 72 toString方法 72 equals方法 73 super关键字 74 方法的重写(override) 74 隐藏/封装(encapsulation) 75 为什么需要封装?封装的作用和含义? 75 使用访问控制符,实现封装 76 封装的使用细节 76 多态(polymorphism) 76 为什么需要多态? 76 如何实现多态? 77 方法绑定(method binding) 77 静态绑定 77 动态绑定 77 多态的使用要点 78 对象的转型(casting) 79 final 81 抽象类 82 抽象类的使用要点 83 接口 83 为什么需要接口? 84 如何定义接口? 84 接口的本质探讨 84 接口使用要点 85 接口的多继承 86 面向接口编程 87 OOP更多应用 87 组合 87 内部类(innerclasses) 88 字符串(java.lang.String类)的使用 90 字符串相等的判断 92 思考作业 93 上机作业 94 第四章 异常机制 95 导引问题 95 异常(Exception)的概念 96 异常分类 96 Error 97 Error和Exception的区别 97 Exception 97 异常的处理办法之一,捕获异常 99 try块 99 catch 99 finally 100 try, catch,finally ,return 执行顺序 100 异常的处理办法之二,声明异常:
AIC的学费很贵,半年18000元,大家看看他们教些什么内容吧他们学校的网址http://www.aicsws-sjtu.com/此内容是Java第1到第六章的PPT,希望大家喜欢如果大家觉得好我继续发课程定位“Java程序”课程覆盖SCJP认证所要求的知识点,是J2EE课程体系中的基础课程。本课程面向的学员应该具有基本的编程概念,能够编写简单的程序,并学习过操作系统,数据结构等计算机理论知识。课程选用最新的JDK5.0版本作为开发平台,教学的宗旨是:激发兴趣,理解知识,树立面向对象编程思维。  课程目标 认识Java平台,了解java application和applet的开发,激发学员对Java编程语言的兴趣。 学习和掌握Java变量,运算符,控制结构,数组,方法等基本语法。 培养和建立面向对象编程的思维方式,可以运用封装、继承和多态三大基本特性编写面向对象的程序。 理解和应用Java异常,常用类,IO,集合和多线程等开发技术。 课时安排 总学时:52学时 授课:48学时 (含约20学时实验) 考试:4学时 预备知识 了解和使用操作系统,计算机的基本组成,简单的程序开发技术 参考教材 “Java 程序设计教程” 第5 版 清华大学出版社 “SCJP学习指南” 人民邮电出版社 “Java 编程思想” 第3版 机械工业出版社 教学内容和要求知识点 重要程度 使用频度 难度Java 入门 高 中 易变量和运算符 高 高 中控制结构 高 高 易数组 高 高 中方法 很高 高 中封装 很高 很高 难继承 很高 很高 难多态 很高 高 很难内部类 高 中 难异常和断言 高 高 难常用类 高 很高 中基本数据结构 高 很高 难集合 很高 很高 难IO和串行化 高 中 难知识点 重要程度 使用频度 难度第1章 Java入门 4课时 了解Java程序开发环境,理解JVM的运作机制。 初步认识面向对象编程,Java视一切为对象。 使用输入和输出语句编写简单的Java应用程序。 区分applet与application(浏览器和虚拟机上运行)。 编写简单的applet,并嵌入HTML文档,掌握其运行方法。 掌握编程规范,如命名,缩进,空格,空行等。 使用javac, java, appletviewer等命令编译和运行application和applet。第2章 面向过程(变量和控制结构) 4课时 掌握变量的内存概念,8种基本类型,字面值和赋值。 正确使用各种Java运算符,如一元运算符,算术运算符,关系运算符,逻辑运算符,条件运算符和赋值运算符等。 辨别使用if,if…else,switch选择结构执行不同的动作。 辨别使用while,for,do…while循环结构执行不同的动作。 使用程序控制语句break和continue。 使用基本类型的包装器类,理解装箱和拆箱。 [*]了解Java内存机制:栈、堆、常量池等,理解垃圾回收机制。第3章 面向过程(数组和方法) 4课时 理解如何声明数组、构造数组、初始化数组以及使用数组中的各个元素。 清楚数组作为对象处理,创建数组对象时指定数组大小。 能够声明和操作多维数组。 掌握定义方法(声明方法)和调用方法,通过参数和返回值传递数据。 理解实际参数与形式参数以及参数类型的提升(隐式转型)。 掌握方法重载(overload)的基本要求。 区别和掌握按值传递与按引用传递。第4章 面向对象(封装) 4课时 理解类封装属性(数据成员)和行为(方法成员),区别类和对象。 能够定义类,创建类的对象(实例化类)和通过对象引用访问数据成员和方法成员;形成定义类和使用类的两种不同的思维方式。 理解构造函数的作用(分配对象空间),理解和定义重载的构造函数。 明白this引用的两种用法。 弄清对象类型与基本类型的区别。 掌握private, public访问控制符。 理解和使用关

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值