HashMap的几种遍历方式(转载)
今天讲解的主要是使用多种方式来实现遍历HashMap取出Key和value,首先在java中如果想让一个集合能够用for增强来实现迭代,那么此接口或类必须实现Iterable接口,那么Iterable究竟是如何来实现迭代的,在这里将不做讲解,下面主要讲解一下遍历过程。
|
1
2
3
4
5
6
|
//定义一个泛型集合Map<String, String> map = new HashMap<String, String>();//通过Map的put方法向集合中添加数据 map.put("001", "刘备"); map.put("002", "曹操"); map.put("003", "孙权"); |
方式一:使用该Map接口的KeySet方法来实现
问题:我们都知道Map接口并没有实现Iterable接口,为什么能用他的KetSet方法就能实现迭代呢?
解析:因为KeySet方法返回此映射中包含的键的 Set 视图,这个方法竟然能返回一个Set试图,也就说他的返回值类型是一个Set接口,我们可以通过API文档看到Set接口他是实现了Iterable接口,所以能实现迭代。
|
1
2
3
4
5
6
|
//调用KeySet方法放回一个Set接口类型 Set<String> 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接口,所以能够迭代。
|
1
2
3
4
|
Collection<String> 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对)。
|
1
2
3
4
5
|
Set<Entry<String, String>> setentry = map.entrySet(); for (Entry<String, String> item : setentry) { System.out.println("Key是:" + item.getKey() + ";Value值是:" + item.getValue()); } |
方式四:使用Map接口的keySet().Iterable()(while循环)
Iterable():返回在此 set 中的元素上进行迭代的迭代器。返回的元素没有特定的顺序(除非此 set 是某个提供顺序保证的类的实例)。返回值类型Iterator<E>
|
1
2
3
4
|
Iterator<String> 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循环)
|
1
2
3
4
5
|
Iterator<String> it1 = map.values().iterator(); while (it1.hasNext()) { String value = it1.next(); System.out.println("Value值是:" + value); } |
方式六:使用Map接口的entrySet().Iterable()(while循环)
|
1
2
3
4
5
|
Iterator<Entry<String, String>> it2 = map.entrySet().iterator(); while (it2.hasNext()) { Entry<String,String> entry=it2.next(); System.out.println("Key是:" + entry.getKey() + ";Value值是:" + entry.getValue()); } |
HashMap的几种遍历方式(转载)的更多相关文章
- HashMap的两种遍历方式
HashMap的两种遍历方式 HashMap存储的是键值对:key-value . java将HashMap的键值对作为一个整体对象(java.util.Map.Entry)进行处理,这优化了Hash ...
- HashMap 中7种遍历方式的性能分析
随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从性能. ...
- HashMap 的 7 种遍历方式与性能分析
前言 随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从 ...
- Java中的HashMap的2种遍历方式比较
首先我们准备数据,准备一个map Map<String, String> map = new HashMap<String, String>(); for (int i = 0 ...
- 谨慎使用keySet:对于HashMap的2种遍历方式比较
HashMap存储的是键值对,所以一般情况下其遍历同List及Set应该有所不同. 但java巧妙的将HashMap的键值对作为一个整体对象(java.util.Map.Entry)进行处理,这优化了 ...
- Map集合的四种遍历方式(转载)
import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TestMap { pu ...
- HashMap的四种遍历方式
package com.xt.map; import java.util.HashMap; import java.util.Iterator; import java.util.Map; impor ...
- HashMap概述及其三种遍历方式
一.HashMap概述: 1.HashMap是一个散列表,它存储的是键值对(key-value)映射: 2.HashMap继承AbstractMap,实现了Map,Cloneable,Serializ ...
- Map三种遍历方式
Map三种遍历方式 package decorator; import java.util.Collection; import java.util.HashMap; import java.util ...
随机推荐
- 随机访问RandomAccessFile
public native long getFilePointer() throws IOException;//当前文件的指针位置是 import java.io.IOException; impo ...
- 16/7/7_PHP-访问控制
访问控制 前面的小节,我们已经接触过访问控制了,访问控制通过关键字public,protected和private来实现.被定义为公有的类成员可以在任何地方被访问.被定义为受保护的类成员则可以被其自身 ...
- ETROBOT——审题
参加了比赛,但是总要理解比赛相关的东西,发现以前瞎写的东西有人看,并且还有挺多人看的,所以打算继续在这里面,做记录. 源: http://www.etrobo.jp/2018/gaiyou/intro ...
- CSP2019 —— 今年欢笑复明年,不知退役在眼前
关于2019CSP-J/-S的一些体会 又是一年退役季,想起在群里看到大佬的一句诗,感慨万千. 今年欢笑复明年,不知退役在眼前 于是便心生文意,随便写点东西来给自己康康. 先说说这次的成绩吧.大家应该 ...
- TensorFlow学习笔记10-卷积网络
卷积网络 卷积神经网络(Convolutional Neural Network,CNN)专门处理具有类似网格结构的数据的神经网络.如: 时间序列数据(在时间轴上有规律地采样形成的一维网格): 图像数 ...
- windows和linux中查看端口占用情况并kill掉对应进程
好几次在不同的情况下遇到 需要查看端口信息 并且kill掉对应进程的情况 相关的参数总是记不全 在这里记录下 以后查看方便 windows中查看正在使用端口的信息netstat -ano|findst ...
- gitlab上传代码及报错总结
将目录变成git可管理的仓库 git init 将文件添加到暂存区中 git add README.md 将文件提交到仓库 git commit -m "fisrt commit" ...
- Linux的tail命令查看文件
小文件一般用cat 查看,但是如果文件内容过多,用cat就不合适了 可以用tail命令 # 默认显示文件最后十行 tail a.txt # 监视文件的尾部内容,默认十行, 可以-n 20显示20行 ...
- python-docx 添加表格时很慢的解决方法
我们做监控系统的时候常需要给客户发送邮箱报告,附带一个word的文档,文档中插入表格给用户更直观的数据. 我用的时python-docx库操作文档,最近碰到,当往文档中插入表格时,随着表格行数的增多, ...
- day17-django基础
3. Django框架 版本:1.11 创建: django-admin startprojcet xxx cd xxx python manage.py startapp app01 python ...