关于ArrayList和LinkedList以及其他单列集合
集合
单列:(基于Collectrion)
List(ArrayList,LinkedList,Vector)
Set(HashSet,TreeSet)
双列:(基于Map)
Map(HashMap,ConcurrentHashMap,HashTable,TreeMap)
ArrayList基本概述与扩容机制
ArrayList是由动态数组实现的,初始容量为0,在第一次添加数据时会出发ArrayList扩容机制扩容到10。当添加的数量超过了ArrayList的容量时,ArrayList会自动扩容为原来的1.5倍。关于ArrayList的扩容机制,ArrayList会调用ensureCapacityInternal方法先判断容量是否足够,如果不够就创建一个原来长度1.5倍的新数组,然后把原数组复制到新数组中,并且添加要添加的元素。
区别
ArrayList是基于动态数组实现的,而LinkedList是基于双向链表实现的。在查找数据时,ArrayList可以使用下标进行查询,时间复杂度是O(1),而LinkedList需要遍历链表,时间复杂度是O(n)。但是他们两个都不是线程安全的。如需保证线程安全,可以在方法内使用,或使用synchronized关键字对两个集合进行修饰。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 精神内猫!






