ArrayList是用数组的方式存储的,做查询时效率很高,但做添加和删除的时候(除在它的后面加)当数据量大时(>20万)时效率明显不如LinkedList;
当在数组中间插入数据时它的后面对应的数据都得向后移动,浪费大量时间。
LinkedList是用链表的方式存储。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。
下面是自己验证的一下例子:
public void testList(){
LinkedList linkedlist = new LinkedList();
List arraylist = new ArrayList();
for(int m=0;m<800000;m++){
linkedlist.add(m,"a");
}
for(int n=0;n<800000;n++){
arraylist.add(n, "a");
}
long time3 = new Date().getTime();
for(int m=0;m<20000;m++){
linkedlist.add(m,"a"); //当在800000条数据之前插入20000条数据时,LinkedList只用了468多ms.这就是LinkedList的优势所在
}
long time4 = new Date().getTime();
System.out.print("batch linkedlist add:");
System.out.println(time4 - time3);
for(int n=0;n<20000;n++){
arraylist.add(n, "a"); //当在800000条数据之前插入20000条数据时,ArrayList用了19032多ms.时间花费是arraylist的近40倍(视测试时机器性能)
}
long time5 = new Date().getTime();
System.out.print("batch arraylist add:");
System.out.println(time5 - time4);
}
希望有帮助!~
分享到:
相关推荐
关于arraylist和linkedList的区别
【Java面试题】ArrayList和LinkedList区别
1.List是接口类,ArrayList和LinkedList是List的实现类 2.ArrayList是动态数组(顺序表)的数据结构 3.LinkedList
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要...
测试ArrayList和LinkedList的add方法
ArrayList、LinkedList、Vector区别简介。
2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动 3.LinkedList不支持高效的随机元素访问 4.ArrayList的
ArrayList Vector LinkedList 区别与用法.
10.ArrayList 和LinkedList的区别.avi
1,ArrayList是数组的数据结构,LinkedList是链表的数据结构。 2,随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于 3,索引(index)的数据结构,可以直接映射到。 4,插入、...
05丨ArrayList还是LinkedList?使用不当性能差千倍.html
Java ArrayList Vector LinkedList map区别 各种集合的区别 写得非常详细
ArrayList 和LinkedList各自的特点是什么,自己实用中的总结
比较ArrayList,LinkedList,Vector三者随机读取,插入,删除性能。
合理运用ArrayList与LinkedList
arraylist 和linked list的时间复杂度
今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。感兴趣的朋友跟随小编一起看看吧
对比Vector、ArrayList、LinkedList1
ArrayList-LinkedList-源码.rar
10.ArrayList和LinkedList基于动态数组,连续内存存储,适合下标访问(随机访问)扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,然后