值按插入顺序打印。这是真的吗?我期望值将以随机顺序打印。
该HashMapAPI
没有定义迭代的顺序。
但是,如果查看HashMap的实现,则可以推断出迭代顺序,键的哈希值,键的插入顺序和哈希表的大小之间存在复杂的过渡关系。如果哈希表自行调整大小,则此关系会变得混乱。
在您的情况下,您正在使用Integer
键,这意味着键的哈希值本身就是键值。另外,您按键顺序插入了条目。这(幸运地!)导致匹配插入顺序的迭代顺序。但是,如果您继续插入更多的键,则会发现迭代顺序“环绕”。然后,当表格经过一系列调整大小时,顺序将变得越来越混乱。
简而言之,您看到的只是哈希表实现的伪像,而不是您可以(或应该)明智地利用的东西。尤其重要,因为它可以从一个Java版本更改为另一个Java版本。