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

标签 java hashmap

我有一个 HashMap 定义如下:

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

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

for (Integer key : blockPositions.keySet()) {
    System.out.println(key);
}

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

{
    4: "abc123",
    1: "def456",
    11: "qwe789",
    10: "iop019"
}

(我知道这是 JSON 格式,这只是为了让您了解数据集)。

我的循环总是输出

1
4
10
11

不管我的数据顺序如何?

重要的是要注意,添加 key 的顺序完全是随机的,我无法控制何时添加什么 key 。

这是俄罗斯方 block 风格的游戏,因此按升序排列按键是必须

最佳答案

引用the Javadoc :

This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.

整数键没有特殊情况。您根本不能依赖该订单。

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

关于java - 当使用 Integer 键迭代 HashMap 时,它总是按升序返回键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43187629/

相关文章:

java - 如何将行从 GridView 拖放到 GridView

java - Eclipse 永远挂起,线程转储说主线程正在 hibernate

Java:从 HashMap 读取可以改变其状态吗?

java - Java中的HashMap和Hashtable有什么区别?

java - 查找HashMap中存储的字符的索引值

Java 匿名类效率影响

java - Play Framework :[RuntimeException:java.lang.reflect.InvocationTargetException]

java - PrintWriter 和 OutputStream 用于简单的客户端服务器套接字程序

java - 比较器和优先级队列

java - 将大文本文件读取到 HashMap - 堆溢出