需求:创建一个HashMap集合,键是学生对象(Student),居住地是(String).存储多个键值对元素,并遍历
要求保证键的唯一性:如果学生对象的成员变量值相同,我们就认为是同一个对象
思路:
1.定义学生类
2.创建HashMap集合对象
3.创建学生对象
4.把学生添加到集合
5.遍历集合
6.在学生类中重写两个方法
hashCode()
equals()
package com.itheima_26;
import java.util.HashMap;
import java.util.Set;
/*
需求:创建一个HashMap集合,键是学生对象(Student),居住地是(String).存储多个键值对元素,并遍历
要求保证键的唯一性:如果学生对象的成员变量值相同,我们就认为是同一个对象
思路:
1.定义学生类
2.创建HashMap集合对象
3.创建学生对象
4.把学生添加到集合
5.遍历集合
6.在学生类中重写两个方法
hashCode()
equals()
*/
public class HashDemo {
public static void main(String[] args) {
//创建HashMap集合对象
HashMap<Student,String> hm = new HashMap<Student,String>();
//创建学生对象
Student s1 = new Student("李一",18);
Student s2 = new Student("李二",19);
Student s3 = new Student("李三",20);
Student s4 = new Student("李三",20);
//把学生添加到集合
hm.put(s1,"商丘");
hm.put(s2,"永城");
hm.put(s3,"夏邑");
hm.put(s4,"北京");
//遍历集合
Set<Student> keySet = hm.keySet();
for (Student key:keySet){
String s = hm.get(key);
System.out.println(key.getName() +"," + key.getAge() + "," + s);
}
}
}
package com.itheima_26;
import java.util.Objects;
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);
}
public int hashCode() {
return Objects.hash(name, age);
}
}