HashMap存储自定义类型键值和LinkedHashMap集合
HashMap存储自定义类型键值
1、当给HashMap中存放自定义对象时,如果自定义对象是键存在,保证键唯一,必须复写对象的hashCode和equals方法。
2、如果要保证map中存放的key和取出的顺序一致,可使用LinkedHashMap集合来存放
public class Person { private String name; private int age; public Person(String name, int age) { super(); //有参构造 this.name = name; this.age = age; }//无参构造 public Person() { super(); } //get set 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; } //toString方法 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; } //哈西和equals 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; } }
public class Demo03 { public static void main(String[] args) { Map<Person,String> map=new HashMap<Person,String>(); map.put(new Person("胸大",22),"java0322班"); map.put(new Person("胸二",20), "java0222班"); map.put(new Person("胸二",20), "java0262班"); //遍历 //1.获取装有所有key的Set集合 Set<Person> set=map.keySet(); //2.遍历set集合取到每一个key for(Person key:set){ System.out.println(key+"..."+map.get(key)); } } }
LinkedHashMap
public class Demo04 { public static void main(String[] args) { Map<String,Person> map=new LinkedHashMap<String,Person>(); //添加数据 map.put("java0322",new Person("胸三",33)); map.put("java0222",new Person("胸大",33)); map.put("java0611",new Person("胸三",33)); //遍历(entrySet迭代器) //1.获取所有结婚证存在的集合 Set<Map.Entry<String,Person>> set=map.entrySet(); //2.获取迭代器对象 Iterator<Map.Entry<String,Person>> it=set.iterator(); //3.循环判断下个元素是否有值 while(it.hasNext()){ //4.获取每一个结婚证对象 Map.Entry<String, Person> entry=it.next(); //5.从结婚证对象中获取key String key=entry.getKey(); //6.从结婚证对象中获取value Person value=entry.getValue(); System.out.println(key+"..."+value); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)