慢慢写

  • 首页
  • 未分类
  • 美文
  • 图片
  • 关于
  • 文章归档
  • 友情链接
  • 读者排行

标签

Druid Kindle型号 Kindle序列号 Spring Boot 世界 个人品牌 假装学习 兴趣爱好 及时止损 商业想法 善良 婚姻 定位 巧克力 幸福 幸福感 幸运的人 思维层次 思维方式 成就感 成熟的标志 改变自己 朋友的生意 梦 梦想的筹码 深度复盘 热情 爱 理想 痛苦 百万美元 美好 职场竞争力 聪明 股票技术分析 自带能量 自律 自我设限 语言能力 项链 高效阅读

Map遍历元素如何按照put顺序输入的元素进行顺序输出

  • 慢慢写
  • 2022-10-27
  • 0

我们利用Map存数,遍历输出的时候希望其按照put的顺序,顺序输出,如何实现呢?其实非常简单,我们常常实现Map的时候,都是采用HashMap,很容易忽略其链表形式的LinkedHashMap(),今天犯了一个容易忽视的错误,先看代码:

public static void main(String[] args) {
        Map<String, String> hashMap = new HashMap<String, String>();
        hashMap.put("1", "aaa");
        hashMap.put("2", "bbb");
        hashMap.put("3", "ccc");
        hashMap.put("4", "ddd");
        hashMap.put("5", "eee");

        for(int i = 0;i<100;){
            for (Map.Entry<String, String> entry : hashMap.entrySet()) {
                System.out.println("hashKey= " + entry.getKey() + "\t" + "hashValue = " + entry.getValue());
            }
            i++;
            System.out.println("\r\n");
        }
    }

代码非常简单,但是遍历100次输出,结果竟然真的是顺序输出,当时我就纳闷了?HashMap不是无序的吗?

改了改代码:

public static void main(String[] args) {
        Map<String, String> hashMap = new HashMap<String, String>();
        Map<String, String> linkedHashMap = new LinkedHashMap<String, String>();

        hashMap.put("1", "aaa");
        hashMap.put("22", "bbb");
        hashMap.put("333", "ccc");
        hashMap.put("4444", "ddd");
        hashMap.put("55555", "eee");

        linkedHashMap.put("6", "老胡");
        linkedHashMap.put("77", "小张");
        linkedHashMap.put("888", "红中");
        linkedHashMap.put("9999", "东风");
        linkedHashMap.put("10000", "西");

        for (Map.Entry<String, String> entry : hashMap.entrySet()) {
            System.out.println("hashKey= " + entry.getKey() + "\t" + "hashValue = " + entry.getValue());
        }

        for (Map.Entry<String, String> entry : linkedHashMap.entrySet()) {
            System.err.println("linkKey= " + entry.getKey() + "\t" + "linkValue = " + entry.getValue());
        }

    }

结果输出果真变成无序的了,想要按照put顺序输出,我们可以采用LinkedHashMap(),它内部有一个链表,保持插入的顺序。迭代的时候,也是按照插入顺序迭代,而且迭代比HashMap快。

结果今天一下子没想到,差点还去写按照key排序的方法,汗颜!
https://www.cnblogs.com/xing-nb/p/15607674.html

© 2025 慢慢写
Theme by Wing
粤ICP备18003946号
  • {{ item.name }}
  • {{ item.name }}