当我们使用 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。