package com.itheima.demo02.Map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*

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

*/
public class Demo01HashMapSavePerson {

public static void main(String[] args) {    show02();}/*    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("秦始皇",18),"秦国");    map.put(new Person("普京",30),"俄罗斯");    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);    }}/*    HashMap存储自定义类型键值    key:String类型        String类重写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);    }}

}

package com.itheima.demo02.Map;

import java.util.Objects;

public class Person {

private String name;private  int age;public Person() {}public Person(String name, int age) {    this.name = name;    this.age = age;}@Overridepublic String toString() {    return "Person{" +            "name='" + name + '\'' +            ", age=" + age +            '}';}@Overridepublic boolean equals(Object o) {    if (this == o) return true;    if (o == null || getClass() != o.getClass()) return false;    Person person = (Person) o;    return age == person.age &&            Objects.equals(name, person.name);}@Overridepublic int hashCode() {    return Objects.hash(name, 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;}

}