gpt4 book ai didi

java - Java HashMap keySet() 迭代顺序是否一致?

转载 作者:IT老高 更新时间:2023-10-28 13:51:54 30 4
gpt4 key购买 nike

我了解从 Map 的 keySet() 方法返回的 Set 不保证任何特定顺序。

我的问题是,它是否保证多次迭代的相同顺序。例如

Map<K,V> map = getMap();

for( K k : map.keySet() )
{
}

...

for( K k : map.keySet() )
{
}

在上面的代码中,假设 map 没有被修改,那么对keySets的迭代是否会以相同的顺序进行。使用 Sun 的 jdk15 它确实以相同的顺序迭代,但在我依赖这种行为之前,我想知道是否所有 JDK 都会这样做。

编辑

我从答案中看到我不能依赖它。太糟糕了。我希望不必建立一些新的 Collection 来保证我的订购。我的代码需要迭代,执行一些逻辑,然后以相同的顺序再次迭代。我将从 keySet 创建一个新的 ArrayList 来保证顺序。

最佳答案

您可以使用 LinkedHashMap如果你想要一个迭代顺序不变的 HashMap。

此外,如果您遍历集合,您应该始终使用它。遍历 HashMap 的 entrySet 或 keySet 比遍历 LinkedHashMap 慢得多。

关于java - Java HashMap keySet() 迭代顺序是否一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882762/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com