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?

4

2 回答 2

2

为什么订单都是混合的:S?

因为 aHashMap不保证它的元素的任何迭代顺序。你不会得到任何固定的订单。如果您想要广告订单,请使用LinkedHashMap.

于 2013-10-02T07:18:26.517 回答
0

如果您查看文档:-

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

这就是为什么您会看到订单变得混乱的原因。正如@RohitLinkedHashMap建议的那样,如果您想维护订单,请尝试使用。

于 2013-10-02T07:20:27.733 回答