当前位置:大问百书>生活百科>ArrayList和LinkedList的区别

ArrayList和LinkedList的区别

2024-09-02 22:27:56 编辑:zane 浏览量:593

ArrayList和LinkedList的区别

的有关信息介绍如下:

ArrayList和LinkedList的区别

一般大家都知道ArrayList和LinkedList的大致区别:

1.ArrayLis来自t是实现了基于动态数组的数氢责众针胜检英河叶真据结构,LinkedList基于链表的数据结构。

2.对于随机访问get和set,ArrayList觉得优于Li只结菜nkedList,因么为LinkedList要移动指针。

3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

360问答这一点要看实际情况的。作若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList变决剧景。但若是批量随机的插入删除数冲额月王配据,LinkedList的速度大大优于ArrayList.因为ArrayList每插入一条数据,要移动插入点及之后的所有振静命日案河祖势烧数据。这一点我做了实验。在分别有200000条“记录”的ArrayList和LinkedList的首位插入20000条数据,Lin垂服宁后kedList耗时约是ArrayList的20分之1。

for(intm=0;m<20000;m++){

***.add(口观m,null);//当在200000条数据之前插入20000条数据时,LinkedList只用了1125多ms.这就是LinkedList的优势所在

}

longtime4=newDte().getTime();

system.***.print("batchlinkedlist镇队有守名斤至于者add:");

system.*觉**.println(time4-time3);

for(intn=0;n<20000;n++){

***.add(n,null);//当在200000条数据之前插入20000条数据时,ArrayList用了18375多ms.时间花费是arraylist的近20倍(视测试时机器性能)

}

longtime5=newDate().getTime();

system.***.print("batcharraylistadd:久三失投管己奏斤更前");

system.***.println(time5-time4);

4.查找操作indexOf,lastIndexOf,contains等,两者差不多。

5.随机查找指定节点的圆必晶花护非阿继刑序蛋操作get,ArrayList速度要快于LinkedList.

这里只是理论上分析,事实上也不一定,ArrayL治京如ist在末尾插入和删除数据的话,速度反而比L亲两迫击胶inkedList需换啊要快。我做过一个插入和删除200000条数据的试验。

longtime才育七为三丝天持乙鸡1=newDate().getTime();

Strings1=(String)***.get(100000);//总记录200000,linkedlist加载第100000条数据耗时15~32ms不等

longtime2=new呼群养按杂概Date().getTime();

system.***.println(time2-time1);

Strings2=(String)***.get(100000);//总记录200000,linkedlist加载第100000条数据耗时0ms

longtime3=newDate().getTime();

system.***.println(time3-time2);

/*分别insert200000条数据到linkedlist和arraylist

*由于是在末尾插入数据,arraylist的速度比linkedlist的速度反而要快

*/

publicstaticvoidinsertList(LinkedListlinklist,ArrayListarraylist){

longtime1=newDate().getTime();

system.***.println(time1);

for(inti=0;i<200000;i++){

***.add(i,"linklist"+i);

}

longtime2=newDate().getTime();

system.***.println(time2-time1);

for(intj=0;j<200000;j++){

***.add(j,"arraylist"+j);

}

longtime3=newDate().getTime();

system.***.println(time3-time2);

}

/*deletelinkedlist和arraylist中的200000条数据

*由于是在末尾删除数据,arraylist的速度比linkedlist的速度反而要快

*/

publicstaticvoiddeleteList(LinkedListlinklist,ArrayListarraylist){

longtime1=newDate().getTime();

system.***.println(time1);

for(inti=199999;i>=0;i--){

***.remove(i);

}

longtime2=newDate().getTime();

system.***.println(time2-time1);

for(intj=199999;j>=0;j--){

***.remove(j);

}

longtime3=newDate().getTime();

system.***.println(time3-time2);

}

publicstaticvoidmain(Stringargs[]){

LinkedListlinkedlist=newLinkedList();

ArrayListarraylist=newArrayList();

insertList(linkedlist,arraylist);

//以下代码省略

插入:

LinkedList578ms

ArrayList437ms

删除:

LinkedList31ms

ArrayList16ms

版权声明:文章由 大问百书 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.dawenbaishu.com/life/83307.html
热门文章