当使用Integer键迭代HashMap时,它是否总是按升序返回键?

Mar*_*dds 0 java hashmap

我有一个HashMap定义如下:

public Map<Integer, String> staticBlockPositions = new HashMap<Integer, String>();

我通过获取每个键来迭代地图,如下所示:

for (Integer key : blockPositions.keySet()) {
    System.out.println(key);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以依靠值key始终按升序排列.所以,如果我的HashMap看起来像这样:

{
    4: "abc123",
    1: "def456",
    11: "qwe789",
    10: "iop019"
}
Run Code Online (Sandbox Code Playgroud)

(我知道这是JSON格式,这只是让你了解数据集).

请问我的循环总是输出

1
4
10
11
Run Code Online (Sandbox Code Playgroud)

不管我的数据顺序如何?

需要注意的是,添加密钥的顺序是完全随机的,我无法控制何时添加密钥.

这是一个俄罗斯方块风格的游戏,所以按升序获得键是必须的.

And*_*ner 8

引用Javadoc:

这个类不保证地图的顺序; 特别是,它不保证订单会随着时间的推移保持不变.

整数键没有特殊情况.你根本不能依赖订单.

如果您希望键按升序排列,请使用SortedMap类似的实现TreeMap.