集合5、集合_Map接口
Map接口
双列数据,存储 key-value 对的数据
一、实现类
- HashMap:作为Map的主要实现类;线程不安全,效率高;可以存储 null 的key-value
- LinkedHashMap:作为HashMap的子类;保证遍历Map元素时,可以按照添加顺序实现遍历;对于频繁的遍历操作时,此类执行效率比HashMap高
- TreeMap:保证按照添加的 key-value 进行排序,实现排序遍历,此时考虑key的自然排序或定制排序;底层使用红黑树
- HashTable:作为古老(jdk1.0)的实现类;线程安全,效率低;不能存储 null 的key-value
- Properties:作为HashTable的子类;常用来处理配置文件;key和value都是String类型
二、HashMap的底层
- 数组 + 链表(jdk7及以前)
- 数组 + 链表 + 红黑树(jdk8)
面试题
- ☆☆☆HashMap的底层原理(极其高频!!!!!)
- HashMap和HashTable的异同?
- ConcurrentHashMap和HashTable的异同?
三、Map结构的理解
- Map中的key:无序的、不可重复的,使用Set存储所有的key ---> key所在的类要重写equals()和hashCode()(以HashMap为例)
- Map中的value:无序的、可重复的,使用Collection存储所有的value ---> value所在类要重写equals()
- 一个键值对:key-value构成了一个Entry对象
- Map中的entry:无序的、不可重复的,使用Set存储所有的entry

浙公网安备 33010602011771号