Java遍历map集合的4中方式

方法一通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。Map<Integer,Integer>map=newHashMap<Integer,Integer>();for(Map.Entry&l…

大家好,又见面了,我是你们的朋友全栈君。

方法一 通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时

这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
  
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {  
  
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
  
}  

方法二、通过Map.keySet遍历key,通过键找值value遍历(效率低),普遍使用,二次取值

Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
  
for (Integer key : map.keySet()) {  
  
    Integer value = map.get(key);  
  
    System.out.println("Key = " + key + ", Value = " + value);  
  
}

 

方法三 如果只需要map中的键或者值,你可以通过Map.keySet或Map.values来实现遍历,而不是用entrySet。在for-each循环中遍历keys或values。

Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
  
//遍历map中的键  
  
for (Integer key : map.keySet()) {  
  
    System.out.println("Key = " + key);  
  
}  

//遍历map中的值  
  
for (Integer value : map.values()) {  
  
    System.out.println("Value = " + value);  
  
}  

方法四:通过Map.entrySet使用iterator遍历key和value

Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
  
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();  
  
while (entries.hasNext()) {  
  
    Map.Entry<Integer, Integer> entry = entries.next();  
  
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
  
}  

全部代码:


public static void main(String[] args) {
        init();
        traversal();
    }

    // HashMap按照哈希算法来存取键对象,有很好的存取性能
    private static HashMap<String, String> hMap = new HashMap<>();

    // TreeMap实现了SortedMap接口,能对键对象进行排序。支持自然排序和客户化排序两种方式。
    private static TreeMap<String, String> tMap = new TreeMap<>();

    // map的赋值
    public static void init() {
        hMap.put("1", "value1");
        hMap.put("2", "value2");
        hMap.put("3", "value3");
    }

    // map的遍历
    public static void traversal() {
        // 第一种:普遍使用,二次取值
        System.out.println("通过Map.keySet遍历key和value:");
        for (String key : hMap.keySet()) {
            System.out.println("key= " + key + " and value= " + hMap.get(key));
        }

        // 第二种
        System.out.println("通过Map.entrySet使用iterator遍历key和value:");
        Iterator<Map.Entry<String, String>> it = hMap.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String> entry = it.next();
            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
        }

        // 第三种:推荐,尤其是容量大时
        System.out.println("通过Map.entrySet遍历key和value");
        for (Map.Entry<String, String> entry : hMap.entrySet()) {
            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
        }

        // 第四种
        System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
        for (String v : hMap.values()) {
            System.out.println("value= " + v);
        }
    }

运行结果:

通过Map.keySet遍历key和value:
key= 1 and value= value1
key= 2 and value= value2
key= 3 and value= value3
通过Map.entrySet使用iterator遍历key和value:
key= 1 and value= value1
key= 2 and value= value2
key= 3 and value= value3
通过Map.entrySet遍历key和value
key= 1 and value= value1
key= 2 and value= value2
key= 3 and value= value3
通过Map.values()遍历所有的value,但不能遍历key
value= value1
value= value2
value= value3

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126763.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月8日 下午12:20
下一篇 2022年4月8日 下午12:20


相关推荐

  • Kimi长思考模型API正式上线,多模态推理能力引关注

    Kimi长思考模型API正式上线,多模态推理能力引关注

    2026年3月12日
    3
  • python3反爬虫原理与绕过实战 网盘_Python 3反爬虫原理与绕过实战「建议收藏」

    第1章 开发环境配置11.1 操作系统的选择11.1.1 Ubuntu简介11.1.2 VirtualBox的安装21.1.3 安装Ubuntu31.1.4 全屏设置81.1.5 Python设置91.2 练习平台Steamboat101.2.1 安装Docker111.2.2 安装Steamboat121.2.3 Steamboat使用说明141.3 第三…

    2022年4月8日
    234
  • OTT TV 与 IPTV 的区别

    OTT TV 与 IPTV 的区别关于 OTTTV 和 IPTV 系统的区别是很多从业者想要弄清楚的 小编根据自己的检验总结了一些 也整理些其他相关的资料 希望对有需要的人员有帮助 一 个人理解 OTTTV 和 IPTV 系统的区别 OTTTV 和 IPTV 从定义来说侧重点不同 而且也有人为的影响因素 从广电总局的 zhengce 来看 IPTV 是宽带运营商才具有资格运营的 它的优势就是走专用网络 所以直播的清晰度更好 播放流畅不卡 而对

    2026年3月19日
    2
  • SiamFC 学习(论文、总结与分析)

    SiamFC 学习(论文、总结与分析)文章目录前言一、SiamFC论文学习1.介绍2.深度相似学习在跟踪中的应用2.1全卷积孪生结构3.引入库二、使用步骤1.引入库2.读入数据总结前言之前看了关于siamFC的论文、博客和代码,已经跑通了代码,但是,只是大概初步学习,没有认真的研究细节。为了后面更好的学习Siam系列的算法还是要重新认真的学习SiamFC。先附上论文和代码。论文:Fully-ConvolutionalSiameseNetworksforObjectTracking代码:基于pytorch框架的htt

    2022年10月1日
    5
  • Java多态理解_什么是java多态

    Java多态理解_什么是java多态多态:同样的引用调用同样的方法却做了不同的事情。概述:在设计一个方法时,通常希望该方法具备定的通用性。例如要实现一个动物叫的方法,由于每种动物的叫声是不同的,因此可以在方法中接收一个动物类型的参数,当传入猫类对象时就发出猫类的叫声,传人犬类对象时就发出犬类的叫声。在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象就是多态。在Java中为了实现多态,允许使用一个父类类型的变…

    2025年8月5日
    5
  • SetTimer的使用

    SetTimer的使用etTimer 函数用于创建一个计时器 KillTimer 函数用于销毁一个计时器 计时器属于系统资源 使用完应及时销毁 SetTimer 的函数原型如下 UINT PTRSetTimer HWNDhWnd UINT PTRnIDEvent UINTuElapse TIMERPROClpT 其中 hWnd 是和 timer 关联的窗口句柄

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号