Map
java.util.Map<K,V>
理解:
Map是一种存储
键值对
映射的容器类,在Map中键可以是任意类型的对象,但不能有重复
的键,每个键都对应一个值,真正存储在图中的是键值构成的条目。
V get(Object key)
获得与键对应的值
V put(K key, V value)
V putAll(Map<? extends K, ? extends V> entries) 将键与对应的值关系插入到映射中
boolean containKey(Object key)
boolean containValue(Object value) 查询
HashMap<K,V>
java.util.HashMap<K,V>
理解:
HashMap是基于哈希表的Map接口的
非同步实现
,继承自AbstractMap
,AbstractMap
是部分实现Map接口的抽象类。
HashMap采用数组+链表
实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当链表中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。
LinkedHashMap<K,V>
java.util.LinkedHashMap<K,V>
理解:
LinkedHashMap
继承
自HashMap
,它主要是用链表实现来扩展
HashMap类,HashMap中条目是没有顺序的,但是在LinkedHashMap中元素既可以按照它们插入图的顺序排序
,也可以按它们最后一次被访问的顺序排序
。
TreeMap<K,V>
java.util.TreeMap<K,V>
理解:
TreeMap
继承
自AbstractMap
实现map
接口。
同时实现了接口NavigableMap
,而接口NavigableMap则继承自SortedMap。SortedMap是Map的子接口,使用它可以确保图中的条目是排好序的。
TreeMap基于红黑树数据结构的实现,
键值可以使用Comparable
或Comparator
接口来排序
。在使用中,如果更新图时不需要保持图中元素的顺序
,就使用HashMap
,如需保持图中元素的插入顺序
或者访问顺序
,就使用LinkedHashMap
,如需要使图按照键值排序
,就使用TreeMap
。