使用HashMap存储自定义类型键值

本文记录Java学习过程中遇到的使用HashMap存储自定义类型的键值对~

练习:每位学生(姓名,年龄)都有自己的家庭住址。那么,既然有对应关系,则将学生对象和家庭住址存储到map集合中。学生作为键, 家庭住址作为值。

注意,学生姓名相同并且年龄相同视为同一名学生。

示例代码(学生类):

public class Student {
	private String name;
	private int age;

	//编写构造方法,这里省略
	//编写get,set方法,这里省略
	//编写toString方法,这里省略
}

示例代码(测试类):

public class HashMapTest {
	public static void main(String[] args) {
		//1,创建hashmap集合对象。
		Map<Student,String> map = new HashMap<Student,String>();
		
		//2,添加元素。
		map.put(new Student("lisi",28), "上海");
		map.put(new Student("wangwu",22), "北京");
		map.put(new Student("zhaoliu",24), "成都");
		map.put(new Student("zhouqi",25), "广州");
		map.put(new Student("wangwu",22), "南京");
		
		//3,取出元素。键找值方式
		Set<Student> keySet = map.keySet();
		for(Student key : keySet){
			String value = map.get(key);
			System.out.println(key.toString()+"....."+value);
		}
		
		//取出元素。键值对方式
		Set<Map.Entry<Student, String>> entrySet = map.entrySet();
		for (Map.Entry<Student, String> entry : entrySet) {
			Student key = entry.getKey();
			String value = entry.getValue();
			System.out.println(key.toString()+"....."+value);
		}
	}
}
  • 当给HashMap中存放自定义对象时,如果自定义对象作为key存在,这时要保证对象唯一,必须复写对象的hashCode和equals方法(如果忘记,请回顾HashSet存放自定义对象)。
  • 如果要保证map中存放的key和取出的顺序一致,可以使用LinkedHashMap集合来存放。

标签: none