hashmap的key
时间: 2024-12-28 11:21:36 浏览: 5
### Java `HashMap` Key 特性及用法
#### 键的唯一性
在 `HashMap` 中,键是唯一的。如果尝试插入相同的键,则新的值会覆盖旧的值。这可以通过下面的例子来说明:
```java
import java.util.HashMap;
public class Test {
public static void main(String[] args){
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("key1", "value1");
hashMap.put("key1", "newValue"); // 新值替换旧值
System.out.println(hashMap.get("key1")); // 输出 newValue
}
}
```
此行为确保了即使存在重复键的情况,也只会保留最新的关联值[^1]。
#### 支持null键
`HashMap` 允许多至一个键为 `null` 的条目。这意味着可以将 `null` 作为键存入 `HashMap` 中,但是仅限一次。对于多于一个 `null` 键的尝试将会导致后者覆盖前者。
```java
import java.util.HashMap;
public class NullKeyExample {
public static void main(String[] args) {
HashMap<Object, Object> mapWithNullKeys = new HashMap<>();
mapWithNullKeys.put(null, "First Value with null key");
mapWithNullKeys.put(null, "Second Value replaces first one because keys are same (both null)");
System.out.println(mapWithNullKeys.containsKey(null)); // true
System.out.println(mapWithNullKeys.size()); // size is still 1 due to single unique key even though we tried adding two entries with the same null key.
}
}
```
上述代码展示了当试图向 `HashMap` 添加多个带有相同 `null` 键的不同对象时的行为[^2]。
#### 不可变性和哈希码一致性
为了保证 `HashMap` 正常工作,建议使用的键应该是不可变的对象,并且其 `hashCode()` 和 `equals(Object)` 方法应该被适当地重写以保持一致。这是因为 `HashMap` 使用这些方法来进行查找操作。例如字符串类就是一个很好的例子,因为它既不可变又提供了合适的 `hashCode()` 和 `equals(Object)` 实现[^3]。
阅读全文