hashmap存储类对象
时间: 2024-01-20 21:16:10 浏览: 62
当使用HashMap存储自定义类对象时,需要确保对象的唯一性。为了实现这一点,需要重写自定义类的hashCode()和equals()方法。
重写hashCode()方法是为了确保不同的对象具有不同的哈希码,从而在HashMap中能够正确地定位到对应的存储位置。
重写equals()方法是为了比较两个对象是否相等。在HashMap中,当发生哈希冲突时,会通过equals()方法来判断两个对象是否相等。
下面是一个示例,演示了如何在HashMap中存储自定义类对象:
```java
import java.util.HashMap;
class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
// 重写hashCode()方法
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
// 重写equals()方法
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
public class HashMapExample {
public static void main(String[] args) {
HashMap<Student, Integer> studentMap = new HashMap<>();
Student student1 = new Student(1, "Alice");
Student student2 = new Student(2, "Bob");
studentMap.put(student1, 90);
studentMap.put(student2, 85);
System.out.println(studentMap.get(student1)); // 输出:90
System.out.println(studentMap.get(student2)); // 输出:85
}
}
```
阅读全文