集合种类
Java中的集合主要分两类:一类是实现Collection接口的;一类是实现Map接口的。
List集合
List是一个接口,是一个有序集合,每一个元素都有他的索引,索引值从0开始,主要实现类有:
ArrayList
底层结构是数组,线程不安全。查询速度快,增删速度慢。
默认初始容量是10,添加元素的时候,如果元素个数大于数组长度就会扩容,新数组长度为原来的1.5倍。具体可查看源码里的add -> ensureCapacityInternal -> ensureExplicitCapacity -> grow方法
int newCapacity = oldCapacity + (oldCapacity >> 1)
LinkedList
底层结构是双向链表,线程不安全。增删速度快,查询速度慢。
Vector
底层结构是数组,线程安全。大量方法都加了synchronized,需要线程等待,性能比较差。
Set集合
Set是一个接口,是一个无序且不重复