我有一个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?
答案 0 :(得分:3)
您是否阅读过HashMap
的Javadoc?它不保证订购。
此课程不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。
如果您想要一致的排序,请使用LinkedHashMap
或TreeMap
。 HashMap
缺乏保证意味着,如果Java开发人员选择,它可以在星期二反向迭代。
答案 1 :(得分:0)
实际上没有办法控制Hash Map中元素的输入顺序,但是可以在它们进入之前对它们进行排序。
include
答案 2 :(得分:0)
您需要使用TreeMap而不是HashMap