继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中,也是能看到他的,所以还是非常值得去学习的一个知识点的,我们直接开车了
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyNxUTMzADN0EjNyYDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
泛型< k,v> 键值对,映射关系 基本特点
该集合存储键值对,是一对一对往里存,而且要保证键的唯一性
1.添加
put(key ,values)
putAll()
2.删除
clear()
remove(object key)
3.判断
containsValue(Object value)
containsKey(Object key)
isEmpty()
4.获取
get(Object key)
size()
values()
entrySet()
keySet()
我们的学习步骤也是这样来的,
Map有三个子类
Hashtable
底层是哈希表数据结构,不可以存入null值或者键,该集合是线程同步的
HashMap
底层是哈希表数据结构,允许使用null的键值对,线程是不同步的。效率高
TreeMap
底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序
Map和Set很像,其实Set底层就是使用了Map集合
我们看一下他们的共同点
这里可以看到输出的结果
但是这里要注意的是,添加元素,如果添加的时候,相同的键,那么后面的,会被后添加的覆盖原有的键对应的值,并put方法会返回被覆盖的值
想取出他的值,他并没有迭代器,那我们的思路可以转变一下拿到他的所有的键再去get不就可以拿到键值对了,我们来看一下
keySet
将map中所有的值存入到Set集合中,因为Set具备迭代器,所有可以迭代方法取出的所有的键,根据get方法,获取每一个键对应的值
这种方法还是比较好理解的,对吧,但是这样比较麻烦,我们来看另一种
定义泛型虽然比较麻烦,但是取出来还是比较简单的,原理是什么?其实我们可以写一段伪代码来说明的
父子接口,直接访问,内部规则
我们可以通过一个小练习来学习一下使用规则,而需求,我直接写在注释上
OK,例子就是用两种取出的方式罢了,相信你自己也一定能做好的,好的,我们本节课到这里也就结束了,下节再见