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

  1. public class LambdaMap {
  2.  
  3. private Map<String, Object> map = new HashMap<>();
  4.  
  5. @Before
  6. public void initData() {
  7. map.put("key1", "value1");
  8. map.put("key2", "value2");
  9. map.put("key3", "value3");
  10. map.put("key4", 4);
  11. map.put("key5", 5);
  12. map.put("key5", 'h');
  13. }
  14.  
  15. /**
  16. * 遍历Map的方式一
  17. * 通过Map.keySet遍历key和value
  18. */
  19. @Test
  20. public void testErgodicWayOne() {
  21. System.out.println("---------------------Before JAVA8 ------------------------------");
  22. for (String key : map.keySet()) {
  23. System.out.println("map.get(" + key + ") = " + map.get(key));
  24. }
  25. System.out.println("---------------------JAVA8 ------------------------------");
  26. map.keySet().forEach(key -> System.out.println("map.get(" + key + ") = " + map.get(key)));
  27. }
  28.  
  29. /**
  30. * 遍历Map第二种
  31. * 通过Map.entrySet使用Iterator遍历key和value
  32. */
  33. @Test
  34. public void testErgodicWayTwo() {
  35. System.out.println("---------------------Before JAVA8 ------------------------------");
  36. Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
  37. while (iterator.hasNext()) {
  38. Map.Entry<String, Object> entry = iterator.next();
  39. System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue());
  40. }
  41. System.out.println("---------------------JAVA8 ------------------------------");
  42. map.entrySet().iterator().forEachRemaining(item -> System.out.println("key:value=" + item.getKey() + ":" + item.getValue()));
  43. }
  44.  
  45. /**
  46. * 遍历Map第三种
  47. * 通过Map.entrySet遍历key和value,在大容量时推荐使用
  48. */
  49. @Test
  50. public void testErgodicWayThree() {
  51. System.out.println("---------------------Before JAVA8 ------------------------------");
  52. for (Map.Entry<String, Object> entry : map.entrySet()) {
  53. System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue());
  54. }
  55. System.out.println("---------------------JAVA8 ------------------------------");
  56. map.entrySet().forEach(entry -> System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue()));
  57. }
  58.  
  59. /**
  60. * 遍历Map第四种
  61. * 通过Map.values()遍历所有的value,但不能遍历key
  62. */
  63. @Test
  64. public void testErgodicWayFour() {
  65. System.out.println("---------------------Before JAVA8 ------------------------------");
  66. for (Object value : map.values()) {
  67. System.out.println("map.value = " + value);
  68. }
  69. System.out.println("---------------------JAVA8 ------------------------------");
  70. map.values().forEach(System.out::println); // 等价于map.values().forEach(value -> System.out.println(value));
  71. }
  72.  
  73. /**
  74. * 遍历Map第五种
  75. * 通过k,v遍历,Java8独有的
  76. */
  77. @Test
  78. public void testErgodicWayFive() {
  79. System.out.println("---------------------Only JAVA8 ------------------------------");
  80. map.forEach((k, v) -> System.out.println("key:value = " + k + ":" + v));
  81. }
  82. }

Java8 Map的遍历方式的更多相关文章

  1. Java8中Map的遍历方式总结

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

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

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

  3. Map的遍历方式

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

  4. map的遍历方式(使用Junit测试)

    package cn.sdut.lah; import java.util.HashMap; import java.util.Iterator; import java.util.Map; impo ...

  5. Map集合的应用及其遍历方式

    ---> HashMap :底层基于哈希表      存储原理也使用哈希表来存放的:            往HashMap添加了元素 ,首先会调用键的hashCode方法 获得一个哈希值,然后 ...

  6. Java Map遍历方式的选择

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

  7. Map集合的遍历方式:

    迭代器来遍历 : entrySet() ; keySet(); values(); eg.HashMap<String,String> map = new HashMap<Strin ...

  8. Map集合的六种遍历方式

    学习目标: 熟练掌握Map的遍历方式 例题: 需求:遍历Map集合 代码如下: package com.yy.object.test.test_collection; import java.util ...

  9. Java(8)中List的遍历方式总结

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

随机推荐

  1. java 管道流PipedInputStream,PipedInputStream和随机访问文件 RandomAccessFile

    http://blog.csdn.net/zlp1992/article/details/50298195   给个链接自己去看吧.网上资料不是很多,而且自己也不想写了 RandomAccessFil ...

  2. 小峰servlet/jsp(1)

    一.scriptlet标签: 通过scriptlet标签我们可以可以在jsp理嵌入java代码: 第一种:<%! %>  可以在里面定义全局变量.方法.类: 第二种:<% %> ...

  3. python 使用selenium和requests爬取页面数据

    目的:获取某网站某用户下市场大于1000秒的视频信息 1.本想通过接口获得结果,但是使用post发送信息到接口,提示服务端错误. 2.通过requests获取页面结果,使用html解析工具,发现麻烦而 ...

  4. Rest架构以及什么是Restful

    关于Rest的内容,在网上开了好多文章~ 下面我就把一些关于Rest经典的链接发出来,大家可以参考一下~ 1.什么是Rest和Restful? 怎样用通俗的语言解释什么叫 REST,以及什么是 RES ...

  5. 搭建MySQL高可用负载均衡集群(收藏)

    https://www.cnblogs.com/phpstudy2015-6/p/6706465.html

  6. 原型模式(ProtoType)

    用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象. 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节. .Net 在 system 命名空间中提供了I ...

  7. SpringJdbc之queryForXXX大全解读

      一.查询单个字段  Object queryForObject(String sql, Object[] args, Class requiredType)  其中Class requiredTy ...

  8. Python常量工具类

    1.定义常量类constant.py # -*- coding: utf-8 -* """常量工具类 author: Jill usage: from constant ...

  9. hibernate vs ibatis

    主要通过 灵活性,性能,开发速度 三个角度来看 1.ibatis非常简单易学,hibernate相对较复杂,门槛较高.  2.二者都是比较优秀的开源产品  3.当系统属于二次开发,无法对数据库结构做到 ...

  10. bootstrap3中select2的默认值和下拉框的禁用

    最近做项目用到了select2插件,需求中需要给下拉框设置默认值之后,禁用下拉框,我开始的写法是这样的 <script type="text/javascript"> ...