首页 理论教育 JavaMap集合遍历

JavaMap集合遍历

更新时间:2025-01-19 工作计划 版权反馈
【摘要】:Map 集合遍历方式主要有两种:一种是使用Iterator 迭代器遍历集合;另一种是使用JDK 8 提供的forEach方法遍历集合。文件7-16Example16.java执行结果Map 集合的另外一种遍历方式是先获取集合中的所有的映射关系,然后从映射关系中取出键和值。文件7-18Example18.java执行结果下面通过一个案例来验证HashMap 集合类的使用,如文件7-19 所示。使用LinkedHashMap 集合保证元素添加顺序,HashMap 集合并不保证集合元素存入和取出的顺序。

Map 集合遍历方式主要有两种:一种是使用Iterator 迭代器遍历集合;另一种是使用JDK 8 提供的forEach(Consumer action)方法遍历集合。

1. Iterator 迭代器遍历Map 集合

先将Map 集合转换为Iterator 接口对象,然后进行遍历。由于Map 集合中元素是由键值对组成的,所以使用Iterator 接口遍历Map 集合时,会有两种将Map 集合转换为Iterator 接口对象再进行遍历的方法:keySet()方法和entrySet()方法。

(1)keySet()方法。

先将Map 集合中所有键对象转换为Set 单列集合,接着将包含键对象的Set 集合转换为Iterator 接口对象,然后遍历Map 集合中所有的键,再根据键获取相应的值。

(2)entrySet()方法。

将原有Map 集合中的键值对作为一个整体返回为Set 集合,接着将包含键值对对象的Set集合转换为Iterator 接口对象,然后获取集合中的所有的键值对映射关系,再从映射关系中取出键和值。

【例7.15】下面通过一个案例来学习HashMap 的用法,如文件7-15 所示。

文件7-15  Example15.java

执行结果

【例7.16】通过一个案例来演示先遍历Map 集合中所有的键,再根据键获取相应的值的方式,如文件7-16 所示。

文件7-16 Example16.java

执行结果

Map 集合的另外一种遍历方式是先获取集合中的所有的映射关系,然后从映射关系中取出键和值。

【例7.17】下面通过一个案例来演示遍历集合中的元素,通过所有映射遍历方式,如文件7-17 所示。

文件7-17 Example17.java

执行结果

在Map 中,还提供了一个values()方法,通过这个方法可以直接获取Map 中存储所有值的Collection 集合。

【例7.18】下面通过一个案例来演示values()方法的使用,如文件7-18 所示。(www.xing528.com)

文件7-18 Example18.java

执行结果

【例7.19】下面通过一个案例来验证HashMap 集合类的使用,如文件7-19 所示。

文件7-19 Example19.java

执行结果

【例7.20】下面通过一个案例来学习LinkedHashMap 的用法,如文件7-20 所示。

文件7-20 Example20.java

执行结果

【例7.21】下面通过一个案例来学习Hashtable 集合类的使用(Hashtable 具有同步性,线程安全),如文件7-21 所示。

文件7-21 Example21.java

执行结果

名字:咏霞工资:5.2

2. forEach(BiConsumer action)方法来遍历Map 集合

在JDK 8 中,根据Lambda 表达式特性新增了一个forEach(BiConsumer action)方法来遍历Map 集合,该方法所需要的参数也是一个函数式接口,因此可以使用Lambda 表达式的书写形式来进行集合遍历。

map.forEach((key,value) ->System.out.println(key + ":" + value));

Map 集合值遍历的values()方法如下:

在Map 集合中,除了以上介绍的两种主要的遍历方式外,还提供了一个values()方法,通过这个方法可以直接获取Map 中存储所有值的Collection 集合。

使用LinkedHashMap 集合保证元素添加顺序,HashMap 集合并不保证集合元素存入和取出的顺序。如果想让这两个顺序一致,可以使用LinkedHashMap 类,它是HashMap 的子类。和LinkedList 一样也使用双向链表来维护内部元素的关系,使LinkedHashMap 元素迭代的顺序与存入的顺序一致。一般情况下,用得最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈