Java集合中List,Set以及Map等集合体系详解
Collection
List
- ArrayList
底层为数组结构(增添快查询慢),允许元素重复和为null值,线程不安全,默认容量为10 扩容时存储空间是原长的1.5倍
- Vector
底层为数组结构,允许元素重复和为null值,相对于ArrayList来说线程安全(vector给每个API都套上了synchronized),扩容时是原长的2倍
- LinkedList
底层为链表结构(查询快增添慢),线程不安全
set
- HashSet
底层结构哈希表,无序唯一,set的hash实现 ,值不重复(hashmap的key实现)使用hsahCode()和equals()实现唯一性
- TreeSet
底层结构红黑树,有序唯一,自然排序与比较器排序保证有序,哈希表保证唯一
- LinkedSet
底层是链表和哈希表结合,有序唯一,
Map
- TreeMap
底层结构红黑树 有序,实现Cloneable接口可被实现,支持序列化,继承AbstractMap
- HashMap
底层哈希表,无序,效率高,允许null值(key仅允许一个,value无限制),父类为Dictionary,默认长度为16,扩容时为原数组的2倍,最大长度为2的30次方
- Hashtable
无序,相对hashMap来说线程安全(除构造函数外,所有public方法声明中都有synchronized关键字),方法同步,效率低,不允许null值,父类为AbstractMap,默认长度是11,扩容时是原长的2倍+1
- LinkedHashMap
底层结构链表与哈希表结合,有序,非线程安全,key和value允许为空,初始长度为16