继collection集合之后
Map集合
通过查看API,我们知道Map集合的一个最大的特点,就是它可以存储键值对的元素。
Map集合储存元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对
Collection集合储存元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍
Map接口:
Map集合的数据结构值针对键有效,跟值无关
Collection集合的数据结构是针对元素有效
添加功能put
删除功能void clear();//移除所有的键值对元素
判断功能containKey
获取功能set
长度功能size()
V put(K key,V value)
如果第一次储存,就直接储存元素,返回null。
如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值。
remove()
containsKey()
get(Key k)
Set<String> set = map.keySet();
Collection<Sting>con = map.values();
Map集合遍历
方式一:根据键找值
方式二:根据键值对对象找键和值
获取多有键值对对象的集合,遍历键值对对象的集合,得到每一个键值对对象,根据键值对对象获取键和值
Set<Map.Entry<K,V>>entrySet():返回的是键值对对象的集合
Set<Map.Entry<String,String>>set = map.entrySet();
LinkedHashMap
TreeMap
练习题:
需求“abcbbbcababcabcabcbacbaaaa”获取字符床每一个字母出现的次数要求结果:
分析:
1、定义一个字符串
2、顶一个TreeMap集合 键:Character 值 Integer
3、把字符串转换成字符数组
4、遍历字符数组,得到每一个字符
5、那刚才得到字符作为键到集合中去找值,看返回值
是null:说明该键不存在,就把该字符作为键,1作为值存储
不是null:说明该键存在,值++,然后重写储存该键和值
6、定义字符串缓冲区变量
7、遍历集合,得到键和值,按照要求拼接
8、把字符串缓冲区转换为字符串输出
HashMap嵌套HashMap
需求假设HashMap集合的元素是ArrayList