HashMap存储自定义类型键值

HashMap存储自定义类型键值
Map集合保证key是唯一的
作为key的元素,必须重写hashCode方法和equals方法,以保证key唯一
例如:

public class Person {
	private String name;
	private int age;
	public Person() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Person(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 "Person [name=" + name + ", age=" + age + "]";
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
		return true;
		if (obj == null)
		return false;
		if (getClass() != obj.getClass())
		return false;
		Person other = (Person) obj;
		if (age != other.age)
		return false;
		if (name == null) {
		if (other.name != null)
			return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
}
/*
   HashMap存储自定义类型键值
   key:String类型
    Stringent类重写hashCode方法和equals方法,可以保证key唯一
   value:Person类型
    value可以重复(同名同年龄的人视为同一个)
  */
private static void show01() {
	//创建HashMap集合
	HashMap<String, Person> map = new HashMap<>();
	//往集合中添加元素
	map.put("北京", new Person("张北京", 18));
	map.put("上海", new Person("李上海", 19));
	map.put("广州", new Person("许广州", 20));
	map.put("北京", new Person("张南京", 18));
	//使用keySet加增强for循环遍历Map集合
	Set<String> set = map.keySet();
	for (String key : set) {
		Person value = map.get(key);
		System.out.println(key + "-->" + value);
		/*
		打印结果:
		上海-->Person [name=李上海, age=19]
		广州-->Person [name=许广州, age=20]
		北京-->Person [name=张南京, age=18]
		*/
	}
}
/*
   HashMap存储自定义类型键值
   key:Person类型
    Person类型就必须重写hashCode和equals方法,以保证key唯一
   value:String类型
    可以重复
  */
private static void show02() {
	//创建HashMap集合
	HashMap<Person, String> map = new HashMap<>();
	//往集合中添加元素
	map.put(new Person("女王", 18), "英国");
	map.put(new Person("秦始皇", 19), "秦国");
	map.put(new Person("普京", 20), "俄罗斯");
	map.put(new Person("女王", 18), "沙俄");
	//使用entrySet和增强for循环遍历Map集合
	Set<Map.Entry<Person, String>> set = map.entrySet();
	for (Map.Entry<Person, String> entry : set) {
		Person key = entry.getKey();
		String value = entry.getValue();
		System.out.println(key + "-->" + value);
	}
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值