博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用多种方式实现遍历HashMap
阅读量:4548 次
发布时间:2019-06-08

本文共 2274 字,大约阅读时间需要 7 分钟。

     今天讲解的主要是使用多种方式来实现遍历HashMap取出Key和value,首先在java中如果想让一个集合能够用for增强来实现迭代,那么此接口或类必须实现Iterable接口,那么Iterable究竟是如何来实现迭代的,在这里将不做讲解,下面主要讲解一下遍历过程。

//定义一个泛型集合Map
map = new HashMap
();//通过Map的put方法向集合中添加数据 map.put("001", "刘备"); map.put("002", "曹操"); map.put("003", "孙权");

方式一:使用该Map接口的KeySet方法来实现

     问题:我们都知道Map接口并没有实现Iterable接口,为什么能用他的KetSet方法就能实现迭代呢?
解析:因为KeySet方法返回此映射中包含的键的 Set 视图,这个方法竟然能返回一个Set试图,也就说他的返回值类型是一个Set接口,我们可以通过API文档看到Set接口他是实现了Iterable接口,所以能实现迭代。
//调用KeySet方法放回一个Set接口类型        Set
set = map.keySet(); //使用for增强来取出key和value for (String item : set) { System.out.println("Key是:" + item + ";Value值是:" + map.get(item)); }

方式二:使用Map接口的Values方法实现(for增强)

  同理:调用Map接口的values方法他放回一个Collection试图,Collection接口他又实现了Iterable接口,所以能够迭代。
Collection
con = map.values(); for (String item : con) { System.out.println("Value值是:" + item); }

方式三:使用Map接口的entrySet方法实现(for增强)

entrySet:entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry,Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。
Set
> setentry = map.entrySet(); for (Entry
item : setentry) { System.out.println("Key是:" + item.getKey() + ";Value值是:" + item.getValue()); }

方式四:使用Map接口的keySet().Iterable()(while循环)

   Iterable():返回在此 set 中的元素上进行迭代的迭代器。返回的元素没有特定的顺序(除非此 set 是某个提供顺序保证的类的实例)。返回值类型Iterator<E>
Iterator
it = map.keySet().iterator();//如果仍有元素可以迭代,则返回 true。
while (it.hasNext()) {
//获取Key值      String key = it.next();
System.out.println("Key是:" + key + ";Value值是:" + map.get(key));     }

方式五:使用Map接口的value.Iterable()(while循环)

Iterator
it1 = map.values().iterator(); while (it1.hasNext()) { String value = it1.next(); System.out.println("Value值是:" + value); }

方式六:使用Map接口的entrySet().Iterable()(while循环)

Iterator
> it2 = map.entrySet().iterator(); while (it2.hasNext()) { Entry
entry=it2.next(); System.out.println("Key是:" + entry.getKey() + ";Value值是:" + entry.getValue()); }

转载于:https://www.cnblogs.com/hyjj/p/5434053.html

你可能感兴趣的文章
CodeVS 1697-⑨要写信
查看>>
关于#pragma once和#ifndefine组合的区别
查看>>
System.Json 使用注意
查看>>
python对日志处理的封装
查看>>
插件的使用(4)-fileupload
查看>>
libuv源码分析(2)
查看>>
【bzoj4554】[Tjoi2016&Heoi2016]游戏 二分图最大匹配
查看>>
oracle Rman 备份脚本
查看>>
网页二维码制作
查看>>
Python-元编程
查看>>
普通table表格样式及代码大全(全)
查看>>
php安装composer
查看>>
C# 使用默认浏览器打开链接
查看>>
【M13】以by reference 方式捕捉exceptions
查看>>
[HTML5] Blob对象
查看>>
搭建TC开发环境详细教程
查看>>
css3背景渐变+2D
查看>>
拓扑图软件技术对比(转载)
查看>>
学习笔记——CDQ分治
查看>>
java校验银行卡号
查看>>