Java8 Map的遍历方式总结

原创 2018年04月16日 18:01:14

import org.junit.Before;
import org.junit.Test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class LambdaMapTest {

    private Map<String, Object> map = new HashMap<>();

    @Before
    public void initData() {
       for (int i = 1; i<1000000;++i){
           map.put(String.valueOf(i), i);
       }
    }

    /**
     * 遍历Map的方式一
     * 通过Map.keySet遍历key和value
     */
    @Test
    public void testOne() {
        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 testTwo() {
        System.out.println("---------------------Before JAVA8 -------------------------");
        Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Object> 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 testThree() {
        System.out.println("---------------------Before JAVA8 ---------------------------");
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue());
        }
        System.out.println("---------------------JAVA8 ------------------------------");
        long time = System.currentTimeMillis();
        System.out.println(time);
        map.entrySet().forEach(entry -> System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue()));
        System.out.println("遍历完花费总时间为:"+(System.currentTimeMillis()-time));
    }

    /**
     * 遍历Map第四种
     * 通过Map.values()遍历所有的value,但不能遍历key
     */
    @Test
    public void testFour() {
        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 testFive() {
        System.out.println("---------------------Only JAVA8 ------------------------------");
        long time = System.currentTimeMillis();
        System.out.println(time);
        map.forEach((k, v) -> {System.out.println("key:value = " + k + ":" + v);});
        System.out.println("遍历完花费总时间为:"+(System.currentTimeMillis()-time));
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/junoohoome/article/details/79964094

java8-遍历map

Map map = new HashMap(); map.put(1L, "ABC"); map.put(2L, "KK"); map.put(3L, "LV"); map.forEa...
  • Leolu007
  • Leolu007
  • 2017-01-03 18:18:31
  • 3926

Java8新特性之forEach+Lambda 表达式遍历Map和List

这是Java8系列的第二篇,今天来说一下Java8中forEach的简单使用。我们使用对比的方式来看应该会看得更加清楚,更能理解: 一、遍历Map============Java8之前的方式====...
  • qq_26718271
  • qq_26718271
  • 2017-04-20 12:18:32
  • 15577

java 8 循环操作List/Map

package com.ven.java8.foreach; import java.util.ArrayList; import java.util.LinkedHashMap; import j...
  • u011659172
  • u011659172
  • 2016-09-19 16:39:15
  • 10685

Java8使用lambda表达式写的一个List,Set,Map遍历工具类

使用感觉就是,麻雀虽小五脏俱全.. 本代码非jdk1.8不支持,首先先定义几个functionInterface: @FunctionalInterface public interface Bean...
  • leiyong0326
  • leiyong0326
  • 2016-07-26 14:47:29
  • 5375

java8 List和Map遍历

java简化了foreach遍历。可以将list和mapzhuan转化为stream来操作 List items = new ArrayList(); items.add("A"); items.a...
  • sinat_23134455
  • sinat_23134455
  • 2017-08-16 23:14:21
  • 294

java8 stream.map和stream.forEach

map和foreach的区别,当我们只是操作list元素内部的对象时,可以用foreach。 当我们生成一个新的对象的时候,使用map会更好。 合理使用两个方法。...
  • sunhuwh
  • sunhuwh
  • 2016-01-30 11:48:35
  • 5578

map的两种遍历方式和区别。

简单点的说:keySet()遍历是先将keys存入Set集合,再遍历该集合中的keys,再用 遍历得到的key取得相应的值 。value= get(key);获得值。 而entrySet()则是把所...
  • jh624
  • jh624
  • 2013-12-11 01:00:25
  • 1618

Map集合的三种遍历方式

package day20; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import jav...
  • zh_ang_lei
  • zh_ang_lei
  • 2015-12-06 22:05:16
  • 4699

map的四种遍历方式

那map通常的遍历方式有哪几种呢? 通常四种方式:keySet集合迭代,entrySet集合迭代,keySet 集合for-each 循环,entrySet集合for-each循环。...
  • magi1201
  • magi1201
  • 2014-12-16 22:09:31
  • 2911

java8 forEach Map List

java8 forEach 在Map和List中的使用 原始的使用Map items = new HashMap(); items.put("A", 10); items.put("B", 20); ...
  • wtljiayou
  • wtljiayou
  • 2016-12-14 13:53:20
  • 17056
收藏助手
不良信息举报
您举报文章:Java8 Map的遍历方式总结
举报原因:
原因补充:

(最多只允许输入30个字)