将整数添加到HashMap

时间:2012-09-03 00:52:43

标签: java iterator hashmap

我有一个HashMap我要从数组中添加整数。键是整数,值是整数的重复数。当我遍历HashMap以获取HashMap中的密钥时,它们似乎是随机顺序。是否有添加这些键的特定顺序?这就是我迭代的方式。

       Set<String> a = names.keySet();
        Iterator i = a.iterator();

        while(i.hasNext())
            String t = (String) i.next();

2 个答案:

答案 0 :(得分:4)

实际上,HashMap以非确定性(不可预测/不可靠)的顺序返回条目。如果您希望按键按顺序显示条目(2之前3),请使用TreeMapjavadoc)。如果您希望条目按初始插入顺序显示,请使用LinkedHashMapjavadoc)。


编辑添加:你说&#34;键是整数&#34;,但是你到处都使用String。请注意,字符串"123"在字符串"23"之前对进行排序,就像"abc""bc"之前排序一样。如果您希望将密钥视为数字,例如通过按数字顺序排序,您应该使用数字类型,例如Integer,而不是String。 (技术上可以通过检查其内容并进行整数比较,为TreeMap Comparator<String>提供比较字符串值的键,但我不认为你想做这一点。)

答案 1 :(得分:2)

来自JavaDocs

  

此类(HashMap)不保证地图的顺序;在   特别是,它不保证订单将保持不变   随着时间的推移

如果您希望以“自然顺序”使用SortedMap,则可以使用LinkedHashMap

如果您希望Iterator按照添加顺序返回密钥,则可以{{3}}代替

  

此链接列表定义了迭代排序,通常是   键被插入到地图中的顺序(插入顺序)