![]() |
1
9
你 可以 这样做,但在大多数情况下不应该这样做。 映射的键需要是常量,并且需要设置其equals和hashcode以给出正确的行为。如果在将关键点添加到地图中后对其进行修改,则会使地图无效。 HashMap可以修改,因此不应用作键。
要解释为什么更改它是一个问题,您需要了解哈希图是如何工作的。这非常简单,但假设您有
每当您添加
现在,当查找对象时,它会查看
通过使用多于2个的存储桶,可以将每个存储桶中的项目数量减少2、4、8或更多倍,从而减少需要检查的对象数量。 然而,假设您在地图中放置一个对象,它将被添加到B0。然后更改对象,hashCode将更改,因此最后一位现在为1。
如果你愿意
这就是为什么hashCode对于HashMap中用作键的任何对象都必须是常量,否则您可能会“丢失”这些键。 |
![]() |
2
1
使用迭代器迭代hashmap值的值 根据您的需求实现这种功能,否则不建议使用。 |
![]() |
3
0
不能将Map用作键,但可以将其用作值。 为了进一步解释,由于您可能要向HashMap中添加密钥,因此密钥将不会保持不变,因此不再用作密钥。 |
![]() |
4
0
如其他回答中所述,
|
![]() |
lagivan · 如何使用map参数测试XQuery函数 10 年前 |
![]() |
sagar · 我们可以在其他映射中使用嵌套映射作为键吗? 10 年前 |
![]() |
user2906420 · 创建传单自定义复选框控件 10 年前 |
![]() |
Ali-Alrabi · 要根据对象键对地图进行排序 10 年前 |
![]() |
SimplGy · javascript中按对象引用哈希 10 年前 |
![]() |
city · 如何在C++映射中提取具有相同前缀的记录? 10 年前 |
![]() |
alvas · 使用带有附加参数的map-python 10 年前 |
|
Bapho · ArrayList还是Map?还有关于如何存放孩子的帮助 10 年前 |