栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java基础】Map遍历元素按put顺序输出(不同Map区别)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java基础】Map遍历元素按put顺序输出(不同Map区别)

直接上代码:

//无序
Map hashMap = new HashMap<>();
//有序
Map linkedHashMap = new LinkedHashMap<>();

for (Map.Entry entry : linkedHashMap.entrySet()) {
    System.out.println("Key= " + entry.getKey() + "t" + "Value = " + entry.getValue());
}

LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。
在一些场景下,该特性很有用,比如缓存。在实现上,LinkedHashMap 很多方法直接继承自 HashMap,仅为维护双向链表覆写了部分方法。若希望有顺序地去存储key-value时,就需要使用LinkedHashMap。

HashMap
最常用的Map,根据键的HashCode值存储数据,可以根据键直接获取它的值,具有很快的访问速度,遍历时候的顺序是完全随机的。HashMap只允许一个键为Null,允许多个值为Null。

特性: 完全随机
优点: 随机访问,取值速度快
缺点:多个线程同时写HashMap可能导致数据不一致,若需同步,使用Collection的synchronizedMap方法或者使用ConcurrentHashMap

LinkedHashMap
LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,与HashMap的随机遍历不同,在用Iterator遍历的时候,先得到的记录肯定是先插入的,类似于python中的OrderedDict。遍历速度会比HashMap慢,不过有一种情况例外: 当HashMap的容量很大,实际数据很少时 , 因为HashMap的遍历速度和它的容量有关,而LinkedHashMap只跟实际数据量有关。

TreeMap
TreeMap实现SortMap接口,能够将它保存的记录按键排序,默认是按键的升序排列,也可以指定排序的比较器,遍历TreeMap的时候,得到的记录是按照键排过序的。

结论:
用的最多:HashMap
按自然顺序或自定义顺序遍历键:TreeMap
需输出的顺序和输入的相同,按读取顺序来排列:LinkedHashMap

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878078.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号