相关疑难解决方法(0)

从HashMap检索的值的顺序是插入顺序

我正在尝试找出可以检索HashMap中的值的顺序.下面是代码片段.

import java.util.HashMap;

public class HashMapExample {

   public static void main(String[] args) {
       HashMap<Integer, String> hashmap = new HashMap<Integer, String>();
       hashmap.put(1, "apple" );
       hashmap.put(2, "lemon" );
       hashmap.put(3, "orange" );
       hashmap.put(4, "banana" );
       hashmap.put(5, "litchi" );
       hashmap.put(6, "mango" );
       hashmap.put(7, "papaya" );

       System.out.println(hashmap.size());

       for (String key : hashmap.values()) {
           System.out.println(key);
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

输出:

7
apple
lemon
orange
banana
litchi
mango
papaya
Run Code Online (Sandbox Code Playgroud)

值按插入顺序打印.一般来说这是真的吗?我期待值以任意顺序打印.这是使用Java 6.

java hashmap

58
推荐指数
4
解决办法
8万
查看次数

当使用Integer键迭代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)

不管我的数据顺序如何?

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

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

java hashmap

0
推荐指数
1
解决办法
412
查看次数

标签 统计

hashmap ×2

java ×2