Arraylist和Linkedlist区别:

来源:互联网 发布:ubuntu 16.04 uuid 编辑:程序博客网 时间:2024/06/06 13:56

ArrayList:

运用场景:数据不经常改变

1)以数组的形式存储数据,默认长度是10 ;

2)插入,新增,删除效率低;查询速度快(根据index索引查询) (删除后的位置向前移动,新增进行容器的check,如果容器大小不够,元素默认添加到到list最后面,则将原来的容器增大到二分之一倍,在这种还不够的情况下,则增加到最小要求的容器长度;插入/删除涉及到元素的移动所以效率低);

3)非线程安全,非同步,只能用在单线程环境下,多线程环境可以考虑用,如果想要线程安全使用Collections.synchronizedList(List l) 函数返回一个线程安全的Arraylist类,也可以使用Concurrent并发包的copyWriteArraylist;

4)增长因子:数据增长为原来的一半

LinkedList:

运用场景:没有大规模的随机读取,大量的增加/删除操作

1)以链表的形式存储数据;

2)插入/删除效率高(如:A,B,C在B,C中间插入一个E,只要记住B,C的位置即可=>记住E元素的前后位置);

3)LinkedList是线程不安全的;

原创粉丝点击