Map:Map使用键值来存储数据,其中值可以重复,但键必须是唯一,也可以为空,但至多只能有一个key为空。Map也称为映射。
模型图:
应用场景:
在一个班中,每个学生都有所对应的学号,相当于key,只要知道key,就可以知道是哪位学生。
比如用户员登录成功之后,就会把用户信息存到的session中,然后需要用到该用户信息时,就通过键去获取。setAttribute("loginUser",User),getAttribute("loginUser"),也是用到键值的知识。
Map与Collection区别:
Collection存储了一组对象,而Map存储关键字/值对。
Map的实现类:
HashMap:
- 线程不安全,效率高。允许null键和null值
- 是基于哈希表的Map接口实现。哈希表的作用是用来保证键的唯一性的。
- 常用实例化方法:
new HashMap< Object, Object>();
Hashtable:
- 线程安全,效率低。不允许null键和null值
LinkedHashMap:
- 是基于Map接口的哈希表和链接列表实现,有序
- 由哈希表保证键的唯一性
- 由链表保证键盘的有序(存储和取出的顺序一致)
- 常用实例化方法:
new LinkedHashMap< Object, Object>();
treeMap:
- TreeMap:是基于红黑树的Map接口的实现。
- 构造方法:
TreeMap() 使用键的自然顺序构造一个新的、空的树映射。
TreeMap(Comparator< ? super K> comparator) 构造一个新的、空的树映射,该映射根据给定比较器进行排序
Map常用方法:
Map中还有一个内部接口Entrty,