map的遍历方式「建议收藏」

map的遍历方式「建议收藏」@org.junit.TestpublicvoidtestHashMap(){Map<String,String>map=newHashMap<>(4);

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

map的遍历方式「建议收藏」


@org.junit.Test
public void testHashMap() {
Map<String, String> map = new HashMap<>(4);
map.put(“a”, “抗美援朝”);
map.put(“b”, “唐山大地震”);
map.put(“c”, “我和我的祖国”);
map.put(“d”, “我和我的家乡”);

    System.out.println("------------------- map.keySet()-------------------------");
    //获取所有的 key,根据 key 取出对应的value
    for (String key : map.keySet()) {
        System.out.println("key:" + key + ",value:" + map.get(key));
    }
    System.out.println("------------------获取map种所有的value:map.values()--------------------------");
    //遍历所有的value
    for (String value : map.values()) {
        System.out.println("value:" + value);
    }
    System.out.println("-------------------获取键值对:map.entrySet()-------------------------");
    //取出对应的 key,value 键值对,容量大时推荐使用
    for (Map.Entry<String, String> entry : map.entrySet()) {
        System.out.println("键值对:" + entry);
        //获取 键值对的 key
        System.out.println("key:" + entry.getKey());
        //获取 键值对的 value
        System.out.println("value:" + entry.getValue());
    }

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

    System.out.println("-------------------- map.forEach JDK1.8 新特性 ----------------------");
    map.forEach((key, value) -> {
        System.out.println("key=" + key + ",value=" + value);
    });
}

推荐:
使用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历。
说明: keySet 其实是遍历了 2 次,一次是转为 Iterator 对象,另一次是从 hashMap 中取出key 所对应的 value。而 entrySet 只是遍历了一次就把 key 和 value 都放到了 entry 中,效率更高。
如果是 JDK8,使用 Map.foreach 方法。
正例: values()返回的是 V 值集合,是一个 list 集合对象; keySet()返回的是 K 值集合,是一个 Set 集合对象; entrySet()返回的是 K-V 值组合

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu安装vscode步骤

    Ubuntu安装vscode步骤Ubuntu安装vscode步骤下载deb文件,网址是点击官网下载 下载好放到ubuntu系统里 然后执行命令 sudodpkg-icode_1.51.1-1605051630_amd64.deb#需要root也就是管理员方式安装#code_1.51.1-1605051630_amd64.deb为对应安装包的名称不同版本名称不同 #运行过程linuxer@ubuntu:~/Documents$lsacode_1.51.1-160505163.

    2026年1月18日
    4
  • 推荐10个堪称神器的学习网站

    推荐10个堪称神器的学习网站每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。”今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得4点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈)既然4点多起来,就得好好利用起来。于是我就挑选了10个堪称神器的学习网站,推…

    2022年6月9日
    50
  • linux服务器杀进程,linux杀死进程命令[通俗易懂]

    进程ID注:信号代码可以省略;我们常用的信号代码是-9,表示强制终止;举例:[root@localhost~]#psauxf|grephttpdroot49390.00.05160708pts/3S+13:100:00\_grephttpdroot48300.11.32423210272?Ss13:020:00/usr/sbin/httpd…

    2022年4月16日
    166
  • 再看PetStore

    再看PetStore

    2021年5月6日
    128
  • C# SplitContainer 控件详细用法

    C# SplitContainer 控件详细用法1.可以将Windows窗体SplitContainer控件看作是一个复合体,它是由一个可移动的拆分条分隔的两个面板。当鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动的。使用SplitContainer控件,可以创建复合的用户界面(通常,在一个面板中的选择决定了在另一个面板中显示哪些对象)。这种排列对于显示和浏览信息非常有用。拥有两个面板使您可以聚合不同区域中的信息,并且用户可以轻松地使用拆分条(也称为“拆分器”)调整面板的大小。另外,还可以嵌套多个SplitC…

    2022年7月18日
    74
  • Cloudsim学习笔记——基本知识

    Cloudsim学习笔记——基本知识Cloudsim澳大利亚墨尔本学校的网格实验室和Gridbus项目推出,是在离散事件模拟包SimJava上开发的函数库,继承了GridSim的编程模型,特点:支持大型云计算的基础设施的建模和仿真; 一个自足的支持数据中心、服务代理人、调度和分配策略的平台独特功能:提供虚拟化引擎,旨在数据中心节点上帮助建立和管理多重的、独立的、协调的虚拟化服务; 在对虚拟化服务分配处理核心时能够在时…

    2022年10月13日
    4

发表回复

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

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