欢迎来到天天文库
浏览记录
ID:30768799
大小:196.00 KB
页数:12页
时间:2019-01-03
《javalinkedlist和arraylist的使用及性能分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JAVALinkedList和ArrayList的使用及性能分析JAVALinkedList和ArrayList的使用及性能分析,这篇文章也是以JAVAList的总结。第1部分List概括List的框架图List是一个接口,它继承于Collection的接口。它代表着有序的队列。AbstractList是一个抽象类,它继承于AbstractcollectionoAbstractList实现List接口中除size()>get(intlocation)之外的函数。AbstractSequentialList
2、是一个抽象类,它继承于AbstractList0AbstractSequentialList实现了“链表中,根据index索引值操作链表的全部函数”。ArrayList,LinkedList,Vector,Stack是List的4个实现类。ArrayList是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。LinkedList是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率低。Vector是矢量队
3、列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。Stack是栈,它继承于Vectoro它的特性是:先进后出(FILO,FirstInLastOut)o第2部分List使用场景学东西的最终目的是为了能够理解、使用它。下面先概扌舌的说明一下各个List的使用场景,后面再分析原因。如果涉及到“栈”、“队列”、“链表”等操作,应该考虑用List,具体的选择哪个List,根据下面的标准来取舍。(01)对于需要快速插入,删除元素,应该使用
4、LinkedListo(02)对于需要快速随机访问元素,应该使用ArrayListo(03)对于“单线程环境”或者“多线程环境,但List仅仅只会被单个线程操作”,此吋应该使用非同步的类(如ArrayList)o对于“多线程环境,且List可能同吋被多个线程操作”,此吋,应该使用同步的类(如Vector)。通过下面的测试程序,我们来验证上面的(01)和(02)结论。参考代码如下:复制代码代码如下:importjava.util.*;importjava」ang.Class;/**@desc对比ArrayL
5、ist和LinkedList的插入、随机读取效率、删除的效率**@authorskywang*/publicclassUstCompareTest{privatestaticfinalintCOUNT=100000;privatestaticLinkedListlinkedList=newLinkedList();privatestaticArrayListarrayList=newArrayList();privatestaticVectorvector=newVector));privatestati
6、cStackstack=newStack();publicstaticvoidmain(String[]args){//换行符System.out.println();//插入insertByPosition(stack);insertByPosition(vector);insertByPosition(linkedList);insertByPosition(arrayList);//换行符System.out.println();//随机读取readByPosition(stack);readByP
7、osition(vector);readByPosition(linkedList);readByPosition(arrayList);//换行符System.out.println();//删除deleteByPosition(stack);deleteByPosition(vector);deleteByPosition(linkedUst);deleteByPosition(arrayUst);}//获取list的名称privatestaticStringgetListName(Listlist)
8、{if(listinstanceofLinkedList){return"LinkedList";}elseif(listinstanceofArrayList){return"ArrayList";}elseif(listinstanceofStack){return"Stack";}elseif(listinstanceofVector){return"Vector";}else{return"List";}}//向lis
此文档下载收益归作者所有