package com.hncu.hashmapdemo;
public class Student {
private String name;
private int age;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", 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 Student(String name, int age) {
this.name = name;
this.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;
if (age != student.age) return false;
return name != null ? name.equals(student.name) : student.name == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + age;
return result;
}
public Student() {
}
}
package com.hncu.hashmapdemo;
import java.util.HashMap;
import java.util.Set;
public class MyHashMapDemo1 {
//hashmap的遍历和基本使用
//当key的值一样时,后出现的那个内容会自动覆盖之前的内容
public static void main(String[] args) {
Student s1 = new Student("小张",14);
Student s2 = new Student("小李",15);
Student s3 = new Student("小吴",16);
HashMap<String,Student> hm = new HashMap<>();
hm.put("001",s1);
hm.put("002",s2);
hm.put("003",s3);
Set<String> set = hm.keySet();
for (String s : set) {
Student stu = hm.get(s);
System.out.println(stu.getName()+","+stu.getAge());
}
}
}
package com.hncu.hashmapdemo;
import java.util.HashMap;
import java.util.Set;
public class MyHashMapDemo2 {
//为了保证数据不重复,要重写hashcode和equals方法,原方法是比较地址值
public static void main(String[] args) {
Student s1 =new Student("小黑",23);
Student s2 =new Student("小白",23);
Student s3 =new Student("小紫",23);
Student s4 =new Student("小紫",23);
HashMap<Student,String> hm = new HashMap<>();
hm.put(s1,"上海");
hm.put(s2,"北京");
hm.put(s3,"武汉");
hm.put(s4,"长沙");
Set<Student> set = hm.keySet();
for (Student stu : set) {
String s = hm.get(stu);
System.out.println(stu.getName()+","+s);
}
//小紫,长沙
//小黑,上海
//小白,北京
}
}