Java中關於HashMap的元素遍歷的順序問題


原文: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM