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

Posted

tags:

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

今天在使用如下的方式遍历HashMap里面的元素时

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

  发现得到的元素不是按照之前加入HashMap的顺序输出的,这个问题我之前倒是没有注意过,后来上网查了一下原因,发现是:HashMap散列图、Hashtable散列表是按“有利于随机查找的散列(hash)的顺序”。并非按输入顺序。遍历时只能全部输出,而没有顺序。甚至可以rehash()重新散列,来获得更利于随机存取的内部顺序。总之,遍历HashMap或Hashtable时不要求顺序输出,即与顺序无关。

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

  可以用java.util.LinkedHashMap 就是按加入时的顺序遍历了。

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

  类似的还有 java.util.LinkedHashSet

转载出处: https://www.cnblogs.com/xdp-gacl/p/3558625.html

 

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

Java中关于 ArrayList 和 Map 的常用遍历方法 (学习笔记,便于以后查询)

Java中关于equals()和hashCode()的问题

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

Java一些知识

java集合之Map接口

在Java中遍历HashMap时如何确保键的顺序不能改变? [复制]