HashMap存储自定义类型键值
键值key为:(学号,姓名.年龄) value为居住地址
我们需要创建Student类
在类中定义id name age
package demo01.demo11.Map;
import java.util.Objects;
public class Student {
private int id;
private String name;
private int age;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id &&
age == student.age &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name, age);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public Student() {
}
}
在主函数中 首先定义一个HashMap的集合<K,V> .K为Student类 ,V为String类
使用put方法将<K,V>存储到map集合中.,获取 所有的 entry对象 entrySet
遍历得到每一个entry对象.用getKey()与getValue()获取他们的键和值.
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class DemotestHashMap {
public static void main(String[] args) {
Map<Student,String>map=new HashMap<Student,String>();
map.put(new Student(177555,"徐某",22),"北京");
map.put(new Student(177444,"胡歌",38),"上海");
map.put(new Student(177666,"曹操",55),"魏国");
map.put(new Student(177777,"刘备",45),"蜀国");
map.put(new Student(177888,"孙权",39),"吴国");
Set<Map.Entry<Student,String>> entrySet=map.entrySet();
for (Map.Entry<Student,String> entry :entrySet
) {
Student key=entry.getKey();
//如果不重写toString方法,会输出地址值
String value=entry.getValue();
System.out.println(key+"居住地是:"+value);
}
}
}