原文:http://www.cnblogs.com/xdp-gacl/p/3558625.html
今天在使用如下的方式遍歷HashMap里面的元素時
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時不要求順序輸出,即與順序無關。
1 Map<String, String> paramMap = new HashMap<String, String>();
可以用java.util.LinkedHashMap 就是按加入時的順序遍歷了。
1 Map<String, String> paramMap = new LinkedHashMap <String, String>();
類似的還有 java.util.LinkedHashSet