java遍历map的集中用法(执行效率)
2015-08-16 21:09
447 查看
首先,遍历map有以下方法:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapTest {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "1");
map.put("2", "2");
map.put("3", "3");
// 第一种:通过Map.keySet遍历key和value
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= " + key + " and value= " + map.get(key));
}
// 第二种:通过Map.entrySet使用iterator遍历key和value
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= "
+ entry.getValue());
}
// 第三种:通过Map.entrySet遍历key和value
System.out.println("通过Map.entrySet遍历key和value:");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= "
+ entry.getValue());
}
// 第四种:通过Map.values()遍历所有的value,但是不能遍历键key
System.out.println("通过Map.values()遍历所有的value:");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}
}
结果如下:
通过Map.keySet遍历key和value:
key= 3 and value= 3
key= 2 and value= 2
key= 1 and value= 1
通过Map.entrySet使用iterator遍历key和value:
key= 3 and value= 3
key= 2 and value= 2
key= 1 and value= 1
通过Map.entrySet遍历key和value:
key= 3 and value= 3
key= 2 and value= 2
key= 1 and value= 1
通过Map.values()遍历所有的value:
value= 3
value= 2
value= 1
这四种方法都可以遍历map:
第一种是目前许多人最喜欢的一种方式,因为代码最少,看起来最简单,通过遍历keySet,再将key所对应的value查询出来,这里有一个二次取值的过程,所以并不推荐;
第二种和第三种原理是相同的,都是通过遍历Map.Entry的方式,将Entry中的key和value打印出来,第三种是比较推荐写法,因为采用jdk1.5后的遍历形式,代码看起来比较整洁;
第四种比较少用,因为我们大多数时候都是同时需要key和value的
综上所述,如果map里面内容比较少,其实采用哪种方式都可以,第一种和第三种相对简洁一些;但是一旦容量非常大时,更推荐采用第三种方式,相比于第一种将极大地节省性能。
注:文章参考:http://blog.sina.com.cn/s/blog_694448320100lx8m.html
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapTest {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "1");
map.put("2", "2");
map.put("3", "3");
// 第一种:通过Map.keySet遍历key和value
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= " + key + " and value= " + map.get(key));
}
// 第二种:通过Map.entrySet使用iterator遍历key和value
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= "
+ entry.getValue());
}
// 第三种:通过Map.entrySet遍历key和value
System.out.println("通过Map.entrySet遍历key和value:");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= "
+ entry.getValue());
}
// 第四种:通过Map.values()遍历所有的value,但是不能遍历键key
System.out.println("通过Map.values()遍历所有的value:");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}
}
结果如下:
通过Map.keySet遍历key和value:
key= 3 and value= 3
key= 2 and value= 2
key= 1 and value= 1
通过Map.entrySet使用iterator遍历key和value:
key= 3 and value= 3
key= 2 and value= 2
key= 1 and value= 1
通过Map.entrySet遍历key和value:
key= 3 and value= 3
key= 2 and value= 2
key= 1 and value= 1
通过Map.values()遍历所有的value:
value= 3
value= 2
value= 1
这四种方法都可以遍历map:
第一种是目前许多人最喜欢的一种方式,因为代码最少,看起来最简单,通过遍历keySet,再将key所对应的value查询出来,这里有一个二次取值的过程,所以并不推荐;
第二种和第三种原理是相同的,都是通过遍历Map.Entry的方式,将Entry中的key和value打印出来,第三种是比较推荐写法,因为采用jdk1.5后的遍历形式,代码看起来比较整洁;
第四种比较少用,因为我们大多数时候都是同时需要key和value的
综上所述,如果map里面内容比较少,其实采用哪种方式都可以,第一种和第三种相对简洁一些;但是一旦容量非常大时,更推荐采用第三种方式,相比于第一种将极大地节省性能。
注:文章参考:http://blog.sina.com.cn/s/blog_694448320100lx8m.html
相关文章推荐
- Spring---AOP简介
- java基础--高薪技术--JDK1.5新特性
- java中super关键字小结
- Java 对象
- Java多重循环算法问题:(九九乘法表、打印平行四边形、打印空心菱形、打印菱形、搬砖问题、斐波那契数列、猴子吃桃问题、回文数、1!+2!+...+20!)
- 自定义spring schema简化与canal集成
- JavaEE SSH集成框架(两) struts2 本地加载dtd文件,action组态
- java中IO流学习小结
- java 基础(环境变量、)
- JAVA IO操作关键点
- Java类的生命周期详解
- Spring用法快速入门
- Java:多重循环for、while、do-while(简单判断是否是四位整数、1-100累加,水仙花、最大公约数。最小公倍数、完数、输入任意数计算每位数之和、弹力球问题)
- Java内存分配全面浅析
- eclipse中的dynamic web project与Static Web Project 的区别
- Java中循环问题:for,while,do-while 各种练习(打印上三角、下三角、输出100以内的素数、水仙花、最大公约、最小公倍数、分解质因数、兔子问题)
- 浅析Spring事务传播行为和隔离级别
- Spring配置简化
- struts2学习笔记(十三)文件下载
- 深入理解java的static关键字