java中map类型_Java中Map类型遍历的两种方式对比
Java中Map类型是存储键值对数据的类型,在编程过程经常使用,进行遍历操作对于每个Java程序员都不会模式,下面总结两种常用的遍历方式(一种keySet,一种entrySet),通过对比让你明白使用entrySet遍历比使用keySet快。
一、使用Map.Entry
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
这种方式效率高,推荐使用此种方式!
二、使用Map的key进行遍历
Map map = new HashMap();
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
Object key = iter.next();
Object val = map.get(key);
}
这种方式教第一种方式效率低,建议尽量少使用!
HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面分析一个完整实例:
package Test;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapTest {
private static int count = 10000;
public static void main(String[] args) {
//使用键进行遍历
HashMap hashmap = new HashMap();
for (int i = 0; i < count; ++i) {
hashmap.put("" + i, "thanks");
}
long bs = Calendar.getInstance().getTimeInMillis();
Iterator iterator = hashmap.keySet().iterator();
while (iterator.hasNext()) {
System.out.print(hashmap.get(iterator.next()));
}
System.out.println();
System.out.println("耗时1:"+(Calendar.getInstance().getTimeInMillis() - bs));
//换一种方案
listHashMap();
}
/**
* 使用键值对遍历
*/
public static void listHashMap() {
HashMap hashmap = new HashMap();
for (int i = 0; i < count; ++i) {
hashmap.put("" + i, "thanks");
}
long bs = Calendar.getInstance().getTimeInMillis();
Iterator> it = hashmap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = it.next();
// entry.getKey() 返回与此项对应的键
// entry.getValue() 返回与此项对应的值
System.out.print(entry.getValue());
}
System.out.println();
System.out.println("耗时2:"+(Calendar.getInstance().getTimeInMillis() - bs));
}
}
测试运行结果如下:
你可以发现使用entrySet明显比使用keySet快。是因为对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。
【发表评论0条 】
java中map类型_Java中Map类型遍历的两种方式对比相关推荐
- java操作oracle数据_Java jdbc操作oracle数据库的两种方式
本文由广州疯狂软件java培训分享: 第一种应该是比较古老的方法了. Windows下采用JDBC-ODBC Bridge连接oracle数据库 1. 安装oracle客户端程序,在tnsnames. ...
- Java中HashMap遍历的两种方式
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...
- python循环展示大写字母_python调用大写函数python中字典的循环遍历的两种方式
开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...
- python中字典的循环遍历的两种方式
开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...
- [Java] HashMap遍历的两种方式
Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: Map map = new HashMap ...
- Java版数据结构之单向链表 新增,有序新增的两种方式,修改和删除(CRUD)
Java版数据结构之单向链表 CRUD Java版数据结构之单向链表 新增,有序新增的两种方式,修改和删除; 留了一个疑问; 我的代码仓库:https://github.com/zhuangbinan ...
- java hashmap遍历顺序_Java中HashMap遍历的两种方式
第一种: Map map = HashMap(); Iterator iter = map.entrySet().iterator(); (iter.hasNext()) { Map.Entry e ...
- php怎么跳转别的手机浏览器,JavaScript_JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式),随着移动互联网的不断普及, - phpStudy...
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式) 随着移动互联网的不断普及,企业的网络宣传不仅只局限在PC端,还要在移动端发展.我们在自己的网站做了WAP手机完整之后,如果有用户通过手机访问我 ...
- Java常见面试题:对象的访问定位的两种方式
对象的访问定位的两种方式 java对象在访问的时候,我们需要通过java虚拟机栈的reference类型的数据去操作具体的对象. 由于reference类型在java虚拟机规范中只规定了一个对象的引用 ...
最新文章
- 考研计算机专业英语题型,考研英语一题型及分值
- 线性时不变系统以及响应的分类
- 内存泄露的原因找到了,罪魁祸首居然是 Java TheadLocal
- Linux 复习重点目录
- 素数判断的java方法_java判断数字是否是素数的方法
- Spring学习总结(1)- IOC
- Elasticsearch--进阶-进阶两种查询方式_request uri查询和query DSL查询---全文检索引擎ElasticSearch工作笔记009
- 《OCA认证考试指南(1Z0-061):Oracle Database 12c SQL基础》
- iOS - 视频开发
- 机器学习基础 | 有监督学习篇
- 世界编程语言2008年初排行榜
- Animator 的总结
- 第十八节:类与对象-构造函数和析构函数-访问控制-对象继承
- 学神经网络需要什么基础,神经网络从入门到精通
- EfficientNet网络结构详解
- linux文件夹英文全称,Linux--Ubuntu中文文件夹转英文
- java set list map_Java中的Set,List,Map
- 用C51单片机的外部中断设计1s定时器
- 微信小程序 实现实时语音识别 腾讯云
- 阿里云智能总裁张建锋:“全面上云的拐点到了!”
热门文章
- 【PostgreSQL-9.6.3】如何得到psql中命令的实际执行SQL
- sublime text3 保存文件时候名字后缀.dump问题解决
- 解决爬取网站过程中遇到的HTTP Error 302错误和中文乱码问题
- 【问题解决方案】visudo: /etc/sudoers is busy, try again later
- sql无效字符 执行sql语句报错解决方案
- 【问题解决】解决创建Android模拟器时提示“No system images installed for this target“的问题
- SQL内部连接3个表?
- Win7磁盘清理怎么操作?十步让你学会
- js中点击按钮时变色,松开后恢复原来的颜色
- ViewPager使用android