集合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)

面试题

  1. ☆☆☆HashMap的底层原理(极其高频!!!!!)
  2. HashMap和HashTable的异同?
  3. ConcurrentHashMap和HashTable的异同?

三、Map结构的理解

  • Map中的key:无序的、不可重复的,使用Set存储所有的key ---> key所在的类要重写equals()和hashCode()(以HashMap为例)
  • Map中的value:无序的、可重复的,使用Collection存储所有的value ---> value所在类要重写equals()
  • 一个键值对:key-value构成了一个Entry对象
  • Map中的entry:无序的、不可重复的,使用Set存储所有的entry
posted @ 2021-11-19 23:46  叁玖贰拾柒  阅读(9)  评论(0)    收藏  举报