//HashMap<Student,String>
//键:学生类型(自定义类型)
//值:字符串类型
//键是自定义类型:要保证键不重复的对象,对于该自定义类必须重写
//Object类中的equals()和hashCode()方法
//HashSet<Student>add方法依赖于HashMap实例里面的put()方法
import java.util.HashMap;
import java.util.Set;
public class HashMapDemo3 {
public static void main(String[] args) {
//创建HashMap集合对象
HashMap<Student,String>hm=new HashMap<Student,String>();
//添加元素
Student s1=new Student("张三",22);
Student s2=new Student("赵三",26);
Student s3=new Student("赵三",26);
Student s4=new Student("刘三",27);
Student s5=new Student("张三",22);
Student s6=new Student("赵三",26);
//添加元素
hm.put(s1, "001");
hm.put(s2, "001");
hm.put(s3, "001");
hm.put(s4, "001");
hm.put(s5, "001");
hm.put(s6, "001");
//获取所有的键
Set<Student>set=hm.keySet();
for(Student s:set) {
String v=hm.get(s);
System.out.println(s.getName()+"--"+s.getAge()+"--"+v);
}
}
}
import java.util.Objects;
public class Student {
private String name;
private int age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super();
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
@Override
public int hashCode() {
return Objects.hash(age, name);
}
@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;
return age == other.age && Objects.equals(name, other.name);
}
}