gpt4 book ai didi

java - 如果键是 Integer 类型,HashMap 条目是否总是按键排序?

转载 作者:搜寻专家 更新时间:2023-11-01 01:49:43 25 4
gpt4 key购买 nike

我正在寻找一个实现,它可以自动按键排序其条目。我找到了 TreeMap 实现,它确实做到了这一点。然而,在我创建的测试中,我发现 HashMap 中的条目默认按它们的键排序,如果键是 Integer 类型的话。我可以假设 HashMap 像这样工作(并继续工作)并安全地使用它,还是应该为此目的使用 TreeMap

最佳答案

不,您不能假设 HashMap 中的条目是按其键排序的,因为它们不是。

您可能使用小的 Integer 键测试了少量条目,这些条目似乎已排序,因为 IntegerhashCode 是它的 int 值本身,所以键 1 转到 bin 1,键 2 转到 bin 2,等等......当你迭代条目时,它们似乎是按键排序的,因为迭代顺序是根据 bin 的索引.

尝试使用较大的 Integer 键,您会发现它们没有排序。

例如:

虽然此代码生成排序键:

HashMap<Integer,String> map = new HashMap<> ();
for (int i=0;i<10;i++) {
map.put (i, Integer.toString (i));
}
for (Integer key : map.keySet ()) {
System.out.println (key);
}

输出:

0
1
2
3
4
5
6
7
8
9

这段代码不会:

HashMap<Integer,String> map = new HashMap<> ();
for (int i=0;i<10;i++) {
map.put (i*100, Integer.toString (i));
}
for (Integer key : map.keySet ()) {
System.out.println (key);
}

输出:

0
400
800
100
500
900
200
600
300
700

关于java - 如果键是 Integer 类型,HashMap 条目是否总是按键排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43871017/

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