Map接口
B站 韩顺平 老师课程的笔记
Map接口
常用Map接口实现类
- HashMap
- Hashtable
- Properties
HashMap小结
- HashMap是Map接口使用频率最高的实现类
- HashMap是以key-value对的方式来储存数据
- key不能重复,但是值可以重复,允许使用null键和null值
- 如果添加相同的key,则会覆盖原来的key-value,等同于修改(key不会替换,val会替换)
- 与HashSet一样,不能保证映射的顺序,因为底层是以hash表的方式来储存的(jdk8的hashMap底层是 数组+链表+红黑树)
- HashMap没有实现同步,因此是线程不安全的
Map接口实现类 都有的特点
以HashMap举例:
- Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value(无序)
- Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中
- Map中的key不允许重复,原因和HashSet一样(前面分析过源码)
- Map中的key可以为null,value也可以为null,注意,key为null,只能有一个,value为null,可以为多个
- 常用String类作为Map的key
- key和value之间存在单向一对一关系,即通过指定的key总能找到对应的value
- 一对k-v是放在一个HashMap$Node中的,因为Node实现了Entry的接口,有些书也说 一对k-v就是一个Entry
自我总结:key影响位置,value是值,key相等表示在同一个位置
1 | public class Map_ { |
1 | import java.util.Collection; |
常用方法
方法列举
- put():添加
- remove():根据键删除映射关系
- get():根据键获取值
- size():获取元素个数
- isEmpty():判断个数是否为0
- clear():清除
- containsKey():查找键是否存在
- containsValue():查找值是否存在
代码尝试
1 | import java.util.HashMap; |
输出展示
1 | map= {邓超=孙俪, null=单身狗, zyr=fengweng, book=Book{name='无', num=100}, 牛逼=大牛人} |
Map六大遍历方式
- containsKey():查找键的方式
- containsValue():查找值的方式
- keySet():获取所有值v
- entrySet():获取所有关系k-v
- values():获取所有值v
- key():获取所有键k
代码展示
只展示了较复杂的遍历情况
1 | import java.util.*; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 秋白's Blog!
评论