javaSE进阶-Map
Map集合概述
- Interface Map<K,V> K:键的类型; V:值的类型
- 将键映射到值的对象,不能包含重复的键;每个键可以映射到最多一个值,即通过键找到值
- 它是一个接口,需要实现类HashMap来实现
- Hashmap的底层是哈希表:保证元素唯一
- Map所有的key其实是一个Set集合,保证键的元素唯一,Map所有的value是某种可以存储重复数据的集合,而把key组成的Set中的元素和value组成的某种的集合中的元素一 一对应起来后,就组成了一个Map。
注意:当插入重复键时,后面的值就会把前面的值覆盖掉
Map集合的基本功能
Map集合的获取功能
Map集合的遍历
方式1:
-
获取所有键的集合。用KeySet()方法实现
-
遍历键的集合,获取到每一个键。用增强for实现
-
根据键去找值。用get(Object key)方法去实现
方式二: -
获取所有键值对对象的集合
Set <Map.Entry<K,V> > entrySet():获取所有键值对对象的集合
-
遍历键值对对象的集合,得到每一个键值对对象
用增强for实现,得到每一个Mapentry -
根据键值对对象获取到键和值
用getKey()得到键
用getValue得到值
HahMap集合存储学生对象并遍历
需求:创建一个HashMap集合,键是学号(String),值是学生对象(Student)。存储三个键值对元素,并遍历
集合嵌套之ArrayList集合存储HashMap元素并遍历
需求:创建一个ArrayList集合,存储三个元素,每一个元素都是HashMap,每一个HashMap的键和值都是String,并遍历
集合嵌套之HashMap集合存储ArrayList元素并遍历
需求:创建一个HashMap集合,存储三个键值对元素,每一个键值对元素的键是String,值ArrayList,每一个ArrayList的元素是String,并遍历
统计字符串中每个字符出现的次数
需求:键盘录入一个字符串,要求统计字符串中每个字符串出现的次数
举例:键盘录入"aababcabcdabcde"
在控制台输出:“a(5)b(4)c(3)d(2)e(1)”
思路:
-
在键盘录入一个字符串
-
创建一个HashMap集合,键是Character,值是Integer
-
遍历字符串,得到每一个字符
-
拿得到的每一个字符作为键到HashMap集合中去找对应的值,看其返回值
如果返回值是null,说明该字符在HashMap集合中不存在,1作为值存储。 如果返回值不是null,说明该字符在HashMap集合中存在,就把该值加1,然后重新存储该字符和对应的值