2013-10-02 143 views
0

一些非常驚人的東西。通過散列圖進行迭代

這是我的代碼:

Map<String, Object[]> data = new HashMap<String, Object[]>(); 
    data.put("1", new Object[] {"VENDOR_NAME", "COUNTRY_CODE", "PREFIX" , "RATE" , "CURRENCY" }); 
    data.put("2", new Object[] {10d, "John", 1500000d}); 
    data.put("3", new Object[] {2d, "Sam", 800000d}); 
    data.put("4", new Object[] {3d, "Dean", 700000d}); 

    Set<String> keyset = data.keySet(); 
    int rownum = 0; 
    for (String key : keyset) { 
     System.out.println(key); 
    } 

其結果是:3,2,1,4-

爲什麼順序全部混合:S'

回答

2

爲什麼訂單混合:S?

因爲HashMap不保證其元素迭代的任何順序。你不會得到任何不變的訂單。如果您需要廣告訂單,請使用LinkedHashMap

+0

工作,謝謝.. – susparsy

+0

如果你想按字母順序,使用TreeMap。 – Thilo

+0

@susparsy。您可以將答案標記爲已接受。 –

0

如果你看看docs: - 基於

哈希表的Map接口的。這個 實現提供了所有可選的映射操作,並且 允許空值和空密鑰。 (HashMap類大致爲 相當於散列表,除非它是不同步的,並且允許 爲空。)這個類不能保證地圖的順序;在 特別是,它不能保證該訂單隨着時間的推移將保持恆定 。

這就是爲什麼你看到訂單混合起來。如@Rohit建議,如果您想維護訂單,請嘗試使用LinkedHashMap