Java8高效遍历map_Java8中Map的遍历方式总结

在这篇文章中,我将对Map的遍历方式做一个对比和总结,将分别从JAVA8之前和JAVA8做一个遍历方式的对比,亲测可行。

public class LambdaMap {

private Map map = new HashMap<>();

@Before

public void initData() {

map.put("key1", "value1");

map.put("key2", "value2");

map.put("key3", "value3");

map.put("key4", 4);

map.put("key5", 5);

map.put("key5", 'h');

}

/**

* 遍历Map的方式一

* 通过Map.keySet遍历key和value

*/

@Test

public void testErgodicWayOne() {

System.out.println("---------------------Before JAVA8 ------------------------------");

for (String key : map.keySet()) {

System.out.println("map.get(" + key + ") = " + map.get(key));

}

System.out.println("---------------------JAVA8 ------------------------------");

map.keySet().forEach(key -> System.out.println("map.get(" + key + ") = " + map.get(key)));

}

/**

* 遍历Map第二种

* 通过Map.entrySet使用Iterator遍历key和value

*/

@Test

public void testErgodicWayTwo() {

System.out.println("---------------------Before JAVA8 ------------------------------");

Iterator> iterator = map.entrySet().iterator();

while (iterator.hasNext()) {

Map.Entry entry = iterator.next();

System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue());

}

System.out.println("---------------------JAVA8 ------------------------------");

map.entrySet().iterator().forEachRemaining(item -> System.out.println("key:value=" + item.getKey() + ":" + item.getValue()));

}

/**

* 遍历Map第三种

* 通过Map.entrySet遍历key和value,在大容量时推荐使用

*/

@Test

public void testErgodicWayThree() {

System.out.println("---------------------Before JAVA8 ------------------------------");

for (Map.Entry entry : map.entrySet()) {

System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue());

}

System.out.println("---------------------JAVA8 ------------------------------");

map.entrySet().forEach(entry -> System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue()));

}

/**

* 遍历Map第四种

* 通过Map.values()遍历所有的value,但不能遍历key

*/

@Test

public void testErgodicWayFour() {

System.out.println("---------------------Before JAVA8 ------------------------------");

for (Object value : map.values()) {

System.out.println("map.value = " + value);

}

System.out.println("---------------------JAVA8 ------------------------------");

map.values().forEach(System.out::println); // 等价于map.values().forEach(value -> System.out.println(value));

}

/**

* 遍历Map第五种

* 通过k,v遍历,Java8独有的

*/

@Test

public void testErgodicWayFive() {

System.out.println("---------------------Only JAVA8 ------------------------------");

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

}

}

Java Map各遍历方式的性能比较

1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的 ...

Java8 Map的遍历方式

在这篇文章中,我将对Map的遍历方式做一个对比和总结,将分别从JAVA8之前和JAVA8做一个遍历方式的对比,亲测可行. public class LambdaMap { private Map&lt ...

java8中map的meger方法的使用

java8中map有一个merge方法使用示例: /** * 打印出包含号码集的label的集合 * * @param args */ public static void main(String[] ...

JS 中的数组遍历方式效率比较

JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代码如下: ; j &lt ...

Java&lpar;8&rpar;中List的遍历方式总结

本篇文章主要讲述了List这一集合类型在Java,包括Java8中的遍历方式,不包括其他的过滤,筛选等操作,这些操作将会在以后的文章中得到提现,由List可以类推到Set等类似集合的遍历方式. pub ...

STL中map的遍历

map作为STL中的映射容器非常好用,我们来说一下map的遍历. map.first为key值,map.second为value值,key不可修改,value可修改. 定义一个迭代指针iter,使其指 ...

项目中一次排序规则的改动,注意到js中map的遍历的顺序

背景:项目需要对前端页面上某个插件的下拉选择项进行排序,需要按照配置的顺序显示. 首先调查后台,发现sql语句中已经添加order by.之后发现查询结果遍历后封装进HashMap,这里改为LinkH ...

Map的遍历方式

public class Mapper { public static void main(String[] args) {  Map map = new ...

Java&lpar;8&rpar;中List的遍历方式

============Java8之前的方式==========Map items = new HashMap<>();items.put(& ...

随机推荐

Hrbustoj 1429 二分&plus;计算几何

http://www.bubuko.com/infodetail-1121744.html 在这个上面学习了方法 如果要判断巨量的点 就应该使用二分法 思路是先从a[1] a[n] a[2]来判断是否 ...

出现 could not open jvm&period;cfg 的解决办法

出现该的原因很可能是由于卸载 jdk 不干净而引起的(就算是使用工具也一样),在oracle的官方上也是让我们卸载了重装一次.可是重装真的能解决问题吗?  以下方法经过本人的验证,绝对可行! (一定要 ...

SpringMVC&comma;MyBatis商品的增删改查

一.需求 商品的增删改查 二.工程结构 三.代码 1.Mapper层 (1) ItemsMapperCustom.java package com.tony.ssm.mapper; import ja ...

IOS中获取文件路径的方法

iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory ...

SAX解析和生成XML文档

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者: 永恒の_☆ 地址: http://blog.csdn.net/chenghui031 ...

php CI 实战教程:如何去掉index&period;php目录

Windows下自由创建.htaccess文件的N种方法 .htaccess是apache的访问控制文件,apache中httpd.conf的选项配合此文件,完美实现了目录.站点的访问控制,当然最多的 ...

FastDFS分布文件系统相关资料索引

FastDFS是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片.视频.文档等文件.对于互联网应用,和其他分布式文件系统相比,优势非常明显.具体情况大家可以看相关的介绍文档,包括 ...

POJ1556 The Doors &lbrack;线段相交 DP&rsqb;

The Doors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8334   Accepted: 3218 Descrip ...

Python 实现获取微信好友信息

最近用闲余时间看了点python,在网上冲浪时发现有不少获取微信好友信息的博客,对此比较感兴趣,于是自己敲了敲顺便记录下来. 一.使用 wxpy 模块库获取好友男比例信息和城市分布. # -*- co ...

Jquery 一个页面单个倒计时 实现


版权声明:本文为weixin_35020639原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。