当我们使用 hashmap<Key, Value>put() 变量添加值时,它们是否总是排序?

因为当我尝试使用简单的代码时,他们正在订购。

例子:

Map<Integer, Integer> ctrArMap = new HashMap<Integer, Integer>();
    ctrArMap.put( 1, 11);
    ctrArMap.put( 2, 12);
    ctrArMap.put( 3, 13);
    ctrArMap.put( 4, 14);
    ctrArMap.put( 5, 15);
    System.out.println(ctrArMap);

但就我而言,他们没有订购。

最佳答案

HashMap 不保留插入顺序。但是,如果您按顺序使用值 0 到 10,这些值恰好在内部散列到桶 0 到 10 中,并按该顺序放置在数组中。当您迭代 HashMap 时,您正在按顺序查看这些存储桶。注意:这个实现在 future 可能会改变,这可能不会发生。

HashMap 的默认大小为 16,加载因子为 0.7 时,您可以添加 11 个值而无需调整大小。这意味着当您查看这些值时,当前实现恰好按排序顺序放置 0 到 10。

如果您只需要按顺序排列 0 到 10 的值,我建议使用数组,而不是 HashMap。

10-08 02:18