java map遍历的5种方法

简介: java map遍历的5种方法

JDK8以下

foreach遍历方式【推荐写法】

public class MapDemo {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "heyi");
        map.put(2, "heyi2");
        map.put(3, "heyi2");
        forMap(map);
    }
    //使用增强for + entrySet 进行循环
    private static void forMap(Map<Integer, String> map) {
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.println("key  >>>>" + entry.getKey());
            System.out.println("Value >>>>>" + entry.getValue());
        }
    }
}

Iterator+entrySet写法

Map.Entry是Map接口的内部接口,获取迭代器后使用while依次取出每个迭代器里面的Map.Entry

public class MapDemo {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "heyi");
        map.put(2, "heyi2");
        map.put(3, "heyi2");
        whileIterator(map);
    }
    //while+迭代器
    private static void whileIterator(Map<Integer, String> map) {
        //获取迭代器
        Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
        //是否存在下一个
        while (iterator.hasNext()) {
            //获取到下一个
            Map.Entry<Integer, String> next = iterator.next();
            //输出key
            System.out.println("Key >>> " + next.getKey());
            //输出value
            System.out.println("Value >>>>>" + next.getValue());
        }
    }
}

Iterator+keyset写法

不推荐,只能获取key,然后通过key获取对应的value,重复计算

public class MapDemo {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "heyi");
        map.put(2, "heyi2");
        map.put(3, "heyi2");
        whileKey(map);
    }
    //while+迭代器获取key
    private static void whileKey(Map<Integer, String> map) {
        Iterator<Integer> iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            Integer key = iterator.next();
            String value = map.get(key);
            System.out.println("Key >>>> " + key);
            System.out.println("Value >>>>>" + value);
        }
    }
}

JDK8

foreach lambda遍历方式【推荐写法 简捷】

public class MapDemo {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "heyi");
        map.put(2, "heyi2");
        map.put(3, "heyi2");
        foreachMap(map);
    }
    private static void foreachMap(Map<Integer, String> map) {
        map.forEach((key, value) -> {
            System.out.println("key >>> " + key);
            System.out.println("value  >>>>>  " + value);
        });
    }
}

stream流遍历Map【不推荐写法,重复计算】

如果Map集合存在一些中间处理,可以过滤操作,使用流式遍历也很方便。

public class MapDemo {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "heyi");
        map.put(2, "heyi2");
        map.put(3, "heyi2");
        streamForeach(map);
    }
    private static void streamForeach(Map<Integer, String> map) {
        map.entrySet().stream().forEach((Map.Entry<Integer, String> enTry) -> {
            System.out.println("key >>> " + enTry.getKey());
            System.out.println("value  >>>>>  " + enTry.getValue());
        });
    }
}


相关文章
WK
|
8天前
|
Python
Python中format_map()方法
在Python中,`format_map()`方法用于使用字典格式化字符串。它接受一个字典作为参数,用字典中的键值对替换字符串中的占位符。此方法适用于从字典动态获取值的场景,尤其在处理大量替换值时更为清晰和方便。
WK
63 36
|
9天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
34 17
|
3天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
8 2
|
4天前
|
存储 Java API
Java交换map的key和value值
通过本文介绍的几种方法,可以在Java中实现Map键值对的交换。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。对于简单的键值对交换,可以使用简单遍历法或Java 8的Stream API;对于需要处理值不唯一的情况,可以使用集合存储或Guava的Multimap。希望本文对您理解和实现Java中的Map键值对交换有所帮助。
7 1
|
10天前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
15 3
|
11天前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
10 2
|
5天前
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
|
11天前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
22 1
|
3月前
|
安全 Java
【Java集合类面试三】、Map接口有哪些实现类?
这篇文章介绍了Java中Map接口的几种常用实现类:HashMap、LinkedHashMap、TreeMap和ConcurrentHashMap,以及它们适用的不同场景和线程安全性。
|
5月前
|
存储 算法 Java
滚雪球学Java(65):深入理解Java中的Map接口:实现原理剖析
【6月更文挑战第19天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
42 3
滚雪球学Java(65):深入理解Java中的Map接口:实现原理剖析