目录
一、Map
Map是一种键值对集合,Map集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是Map类型的,就像数组中的元素还可以是数组一样。
二、实现类一:HashMap
一、底层实现
Map<K,V>是一种键-值映射表,当我们调用put(K key,V value)方法时,就把key和value做了映射并放入Map。当我们调用V get(K key)时,就可以通过key获取到对应的value。如果key不存在,则返回null。和list类似,Map也是一个接口,最常用的实现类就是HashMap。
HashMap内部数据结构使用数组+链表+红黑树进行存储。数组类型为Node[],每个Node都保存了某个键值对元素的key、value、hash、next等值。由于next的存在,所以每个Node对象都是一个单项链表中的组成节点。
当新添加一个KV键值对元素时,通过该元素的key的hash值,计算该元素在数组中应该保存的位置。如果该下标位置如果已经存在其他Node对象(产生hash冲突),则采用连地址法处理,即将新添加的KV键值对元素将以链表形式存储。将新元素封装成一个新的Node对象,插入到该下标位置的链表尾部。当链表的长度超过8