我有一个HashMap定义如下:
public Map<Integer, String> staticBlockPositions = new HashMap<Integer, String>();
我通过获取每个键来迭代地图,如下所示:
for (Integer key : blockPositions.keySet()) {
System.out.println(key);
}
我的问题是,我可以依赖key
的值始终按升序排列。所以,如果我的HashMap看起来像这样:
{
4: "abc123",
1: "def456",
11: "qwe789",
10: "iop019"
}
(我知道这是JSON格式,这只是让你了解数据集)。
我的循环总是输出
1
4
10
11
无论我的数据顺序如何?
需要注意的是,添加密钥的顺序是完全随机的,我无法控制何时添加密钥。
这适用于俄罗斯方块风格的游戏,因此按升序排列按键是必须。
答案 0 :(得分:8)
引用the Javadoc:
此课程不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。
整数键没有特殊情况。你根本不能依赖订单。
如果您希望密钥按升序排列,请使用SortedMap
的实施,例如TreeMap
。
答案 1 :(得分:0)
除了@AndyTurner关于HashMap
不保证订单的说法外,TreeMap似乎还提供了您正在寻找的功能。
答案 2 :(得分:0)
不,
要维护排序顺序,请使用TreeMap。
要维护广告订单,请使用LinkedHashMap。