标签:map HashMap 自定义 age Person String 键值 public name
HashMap存储自定义类型键值:
Map集合保证key是唯一的:
作为key的元素,必须重写hashcode方法和equals方法,以保证key唯一
HashNap存储自定义类型键值第一种:
key:String类型
String类重写hashCode方法和equals方法,可以保证key唯一
value:Person类型
value可以重复(同名同年龄的人视为同一个)
public class Person { private String name; private int age; @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } public Person() { } public Person(String name, int age) { 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; } }
private static void show01() { HashMap<String, Person> map = new HashMap<>(); map.put("北京",new Person("张三",14)); map.put("上海",new Person("李四",25)); map.put("四川",new Person("王五",16)); map.put("北京",new Person("赵六",36)); Set<String> keySet = map.keySet(); for (String key : keySet) { System.out.println(key+"="+map.get(key)); } }
HashMap存储自定义类型键值第二种方式:
key:Person
Person类必须重写hashCode方法和equals方法,以保证key唯一
value:String类型
可以重复
public class Person { private String name; private int age; @Override public 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); } @Override public int hashCode() { return Objects.hash(name, age); } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } public Person() { } public Person(String name, int age) { 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; } }
private static void show02() { HashMap<Person, String> map = new HashMap<>(); map.put(new Person("张三",14),"北京"); map.put(new Person("李四",34),"上海"); map.put(new Person("王五",23),"重庆"); map.put(new Person("张三",14),"上海"); Set<Map.Entry<Person, String>> set = map.entrySet(); for (Map.Entry<Person, String> entry : set) { System.out.println(entry.getKey()+"="+entry.getValue()); } }
Hashtable集合:
Hashtable<K ,V>集合implements Map<K,V>接口
Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快
HashMap集合:可以存储nuLL值, nuLL键
Hashtable集合:不能存储null值, null键
Hashtable和vector集合一样,在jdk1.2版本之后被更先进的集合(HashMap ,ArrayList)取代了
public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put(null,"456"); map.put("123",null); map.put(null,null); System.out.println(map); Hashtable<String, String> hashtable = new Hashtable<>(); hashtable.put(null,"张三"); hashtable.put("张三",null); hashtable.put(null,null); System.out.println(hashtable); }
搜索
复制
标签:map,HashMap,自定义,age,Person,String,键值,public,name 来源: https://www.cnblogs.com/hungui/p/16455316.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。