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!
评论