JAVA集合类

1,127 阅读1分钟
  • Java集合类都实现自Collection接口

List接口

允许元素重复允许,允许添加null。

ArrayList

底层为数组,线程不安全,默认容量为10,每次扩容会扩容为1.5倍。按索引查询非常快,但是不在末尾插入需要移动全部的数组。

LinkedList

底层为双线链表,线程不安全。查询非常慢,但是每次插入不需要移动所有元素,插入简单。

Vector

底层为数组,线程安全,但是效率不高,已经弃用。

Set接口

存储单个元素,不允许有重复元素。

HashSet

底层实现通过HashMap,不允许有重复元素,允许有Null值,乱序存储

TreeSet

底层是TreeMap,有序存储,不允许重复元素,不允许有null值。

Map

HashMap

存储键值对,key值可以为null,不允许有重复的key值出现,底层数组+链表的哈希表实现,默认容量为16,扩容因子为0.75,当元素数量大于数组大小*0.75,每次扩容成原来的两倍。

TreeMap

底层红黑树实现,key值不能为null,不允许重复的key值出现。

HashTable

线程安全处理,效率非常慢,key和value都不为空,

ConcurrentHashMap

线程安全的hashMap,效率比hashTable效率高。key值不能为null。