今天在使用以下的方式遍历HashMap里面的元素时java
1 for (Entry<String, String> entry : hashMap.entrySet()) { 2 MessageFormat.format("{0}={1}",entry.getKey(),entry.getValue()); 3 }
发现获得的元素不是按照以前加入HashMap的顺序输出的,这个问题我以前却是没有注意过,后来上网查了一下缘由,发现是:HashMap散列图、Hashtable散列表是按“有利于随机查找的散列(hash)的顺序”。并不是按输入顺序。遍历时只能所有输出,而没有顺序。甚至能够rehash()从新散列,来得到更利于随机存取的内部顺序。
总之,遍历HashMap或Hashtable时不要求顺序输出,即与顺序无关。spa
1 Map<String, String> paramMap = new HashMap<String, String>();
能够用java.util.LinkedHashMap 就是按加入时的顺序遍历了。code
1 Map<String, String> paramMap = new LinkedHashMap <String, String>();
相似的还有 java.util.LinkedHashSetorm