通过hashmap迭代

时间:2013-10-02 07:17:38

标签: java hashmap

非常讨厌。

这是我的代码:

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 个答案:

答案 0 :(得分:2)

  

为什么订单全部混合:S?

因为HashMap不保证其元素的任何迭代次序。你不会得到任何不断的订单。如果您需要广告订单,请使用LinkedHashMap

答案 1 :(得分:0)

如果您查看docs: -

  

基于哈希表的Map接口实现。这个   实现提供了所有可选的map操作,以及   允许空值和空键。 (HashMap类大致是   相当于Hashtable,除了它是不同步的并允许   nulls。)这个类不保证地图的顺序;在   特别是,它不保证订单将保持不变   随着时间的推移。

这就是为什么你看到订单混乱的原因。如 @Rohit 建议,如果您想维护订单,请尝试使用LinkedHashMap