Java基础篇 关于解决HashMap的元素遍历的顺序问题

Posted 彭老希

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础篇 关于解决HashMap的元素遍历的顺序问题相关的知识,希望对你有一定的参考价值。

(1)例子:

for (Entry<String, String> entry : hashMap.entrySet()) {
     MessageFormat.format("{0}={1}",entry.getKey(),entry.getValue());
 }

发现得到的元素不是按照之前加入HashMap的顺序输出的

(2)原因

HashMap散列图、Hashtable散列表是按“有利于随机查找的散列(hash)的顺序”。并非按输入顺序。遍历时只能全部输出,而没有顺序。

可以rehash()重新散列,来获得更利于随机存取的内部顺序

(3)基础写法,不要求顺序

Map<String, String> paramMap = new HashMap<String, String>();

(4)顺序写法,要求记录插入的顺序

使用java.util.LinkedHashMap ,达到按加入时的顺序遍历

Map<String,String> paramMap = new LinkedHashMap<String,String>();

类似的还有 java.util.LinkedHashSet

以上是关于Java基础篇 关于解决HashMap的元素遍历的顺序问题的主要内容,如果未能解决你的问题,请参考以下文章

彻底理解HashMap的元素插入原理

Java HashMap 如何正确遍历并删除元素

jdk源码阅读笔记之java集合框架(基础篇)

Java中关于HashMap的元素遍历的顺序问题

Java面试准备

Java基础-Stream流方法引用篇