java 8 HashMap.put方法都做了什么?
时间: 2023-06-05 11:04:52 浏览: 67
HashMap.put方法将一个键值对存储到HashMap中。它首先使用键的哈希值计算出它应该存储在哪个桶中,然后将键值对存储在该桶中。如果该桶中已经有了一个键值对,则它会检查该键是否已经存在,如果存在,则用新的值替换旧的值,否则将新的键值对添加到链表或红黑树中。如果HashMap的大小超过了负载因子与桶的数量的乘积,则HashMap将自动进行rehash操作,以便在添加更多的键值对时能够保持高效。
相关问题
hashmap.put
HashMap.put()是Java中HashMap类的一个方法,用于将指定的键值对添加到HashMap中。它的语法如下:
```java
V put(K key, V value)
```
其中,K表示键的类型,V表示值的类型。该方法将指定的键值对添加到HashMap中,并返回之前与指定键关联的值(如果存在)。如果HashMap中已经存在相同的键,则新的值将替换旧的值。
HashMap是一种基于哈希表实现的键值对存储结构,它使用键的哈希码来确定存储位置,从而实现快速的插入、查找和删除操作。在插入键值对时,HashMap会根据键的哈希码计算出对应的存储位置,并将值存储在该位置上。
为什么完善的代码在hashmap.put()会报错
在你提供的代码中,`name` 的类型是 `String`,而在 `hashMap` 中的值类型是 `Integer`,这会导致在 `hashMap.put("name", name)` 的时候编译器报错。
你可以将 `name` 转换为 `Integer` 类型,例如可以使用 `Integer.parseInt()` 方法将字符串 `name` 转换为整数类型。修改后的代码如下:
```java
import java.util.HashMap;
import java.util.Map;
public class Student {
private String name;
private int number;
private Map<String, Integer> hashMap;
public Student(String name, int number) {
this.name = name;
this.number = number;
hashMap = new HashMap<>(1000);
// 在构造函数中将 name 和 number 存储到 hashMap 中
hashMap.put("name", Integer.parseInt(this.name));
hashMap.put("number", this.number);
}
public void putInfo(String key, int value) {
hashMap.put(key, value);
}
// 其他方法
}
```
在这个示例中,我们使用 `Integer.parseInt()` 方法将 `name` 转换为整数类型,然后再将其存储到 `hashMap` 中。这样就可以避免类型不匹配的问题了。