Java HashMap keySet() 迭代顺序是否一致?
我理解从Map的keySet()方法返回的Set不保证任何特定的顺序。
我的问题是,它是否保证了多次迭代的相同顺序。例如
Map<K,V> map = getMap();
for( K k : map.keySet() )
{
}
...
for( K k : map.keySet() )
{
}
在上面的代码中,假设映射未被修改,则对 keySets 的迭代将按相同的顺序进行。使用Sun的jdk15,它确实以相同的顺序迭代,但在我依赖这种行为之前,我想知道是否所有的JDK都会做同样的事情。
编辑
我从答案中看到我不能依赖它。太糟糕了。我希望不必建立一些新的收藏来保证我的订购。我的代码需要迭代,执行一些逻辑,然后使用相同的顺序再次迭代。我将从 keySet 创建一个新的 ArrayList,这将保证顺序。