Java HashMap目录

时间:2017-07-27 02:55:44

标签: java hash hashmap

我有一个HashMap来存储<Integer, ArrayList<String>>的数据。我使用put(...)在地图中添加数据(如果它还不存在)。我使用containsKey()检查条目是否已经在地图中。如果存在,我通过执行以下操作将String添加到键中:

x.get(i).add(str)

为了获取数据,我只是使用散列的keySet()进行了for循环。

如果我有这个哈希:

int -> array of strings
1 -> "a", "b", "c"
2 -> "aa", "bb", "cc"
3 -> "aaa", "bbb", "ccc"

我的问题是,正在读取的数据的顺序不一致。 在1台PC中,它可能按以下顺序读取密钥:2,1,3。在另一台PC中,它可能按以下顺序读取:1,2,3。

我希望所有PC的读取顺序相同。它们进入hashmap的顺序也是一样的,但为什么hashmap以不同的顺序读取Keysets?

3 个答案:

答案 0 :(得分:3)

您是否阅读过HashMap的Javadoc?它不保证订购。

  

此课程不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。

如果您想要一致的排序,请使用LinkedHashMapTreeMapHashMap缺乏保证意味着,如果Java开发人员选择,它可以在星期二反向迭代。

答案 1 :(得分:0)

实际上没有办法控制Hash Map中元素的输入顺序,但是可以在它们进入之前对它们进行排序。

include

答案 2 :(得分:0)

您需要使用TreeMap而不是HashMap