ArrayList ,LinkedList 和Vector

一 功能介绍

1.1  ArrayList
    底层是基于数组,在内存中分配连续内存空间,非线程安全

  长度大小的自管理:  采取延迟分配对象数组大小空间的,当第一次添加元素时才会分配10个对象空间(即ArrayList 默认长度为10),每次超过都按1.5倍扩容(内部实现:先复制新数组,再添加新元素到新数组内)

1.2  Vector (向量类)

动态数组的功能,不顾忌类型,不顾忌大小,也方便查找
底层也是基于数组实现的,线程安全

1.3  LinkedList 

底层是基于双向链表实现的,在内存中分配的空间不是连续的,也非线程安全

二  ArrayList 和 LinkedList 的区别和用法

扫描二维码关注公众号,回复: 7755887 查看本文章

2.1 插入元素

LinkedList无论插入任何位置都一样,只需要创建一个新的表项节点和移动一下指针(前后两个表项的指针),性能消耗很低

ArrayList插入元素是默认追加到数组后面,但如果ArrayList指定位置插入元素,元素位置越靠前,需要重写排序的元素越多

结论频繁插入删除元素,则使用LinkedList

2.2 按索引查询元素(get(i) )

链表需要遍历链表,根据位置对节点遍历查找 (如果下标位置在总长度中间之前,则从前往后遍历查找,否则从后往前遍历)

数组直接根据索引能查到元素

结论ArrayList使用在查询比较多,但是插入和删除比较少的情况,而LinkedList用在查询比较少而插入删除比较多的情况

猜你喜欢

转载自www.cnblogs.com/hup666/p/11800904.html