HashMap集合存储自定义对象

//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);
	}

	
	
}
经验分享 程序员 微信小程序 职场和发展