今天在使用以下的方式遍歷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