arraylist与linkedlist的区别与性能测试
Posted R.O.C.K.S
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arraylist与linkedlist的区别与性能测试相关的知识,希望对你有一定的参考价值。
/** *arraylist和linkedlist的适用场合。 **/ import java.util.List; import java.util.ArrayList; import java.util.LinkedList; import java.util.Date; public class Demo2{ public static void main(String[]aa){ switch (aa[0]){ case "0":arrylistInset();break; case "1":linkedlistInset();break; case "2":arrylistGet();break; case "3":linkedlistGet();break; } } public static void arrylistInset(){ //967ms List<Integer> list = new ArrayList<Integer> (); for(int i=0;i<5000;i++){//创建数据表 for(int j=1;j<1000;j++){ list.add(i+j); } } Long begin = new Date().getTime(); for(int i=3;i<1000;i+=3){//插入数据 list.add(i,i); } Long end = new Date().getTime(); System.out.println("cost : " + (end - begin)+ " ms"); System.out.println("number:" + list.size()); } public static void linkedlistInset(){ //15ms List<Integer> list = new LinkedList<Integer> (); for(int i=0;i<5000;i++){//创建数据 for(int j=1;j<1000;j++){ list.add(i+j); } } Long begin = new Date().getTime(); for(int i=3;i<1000;i+=3){//插入数据 list.add(i,i); } Long end = new Date().getTime(); System.out.println("cost : " + (end - begin)+ " ms"); System.out.println("number:" + list.size()); } public static void arrylistGet(){ //get 1w条数据花费时间:0ms // 10w条:0ms; List<Integer> list = new ArrayList<Integer> (); for(int i=0;i<5000;i++){//创建数据表 for(int j=1;j<1000;j++){ list.add(i+j); } } Long begin = new Date().getTime(); for(int i=3;i<50000;i++){//插入数据 list.get(i); } Long end = new Date().getTime(); System.out.println("cost : " + (end - begin)+ " ms"); System.out.println("number:" + list.size()); } public static void linkedlistGet(){ //get 1w条数据花费时间:219ms // 10w条:6616ms; List<Integer> list = new LinkedList<Integer> (); for(int i=0;i<5000;i++){//创建数据 for(int j=1;j<1000;j++){ list.add(j); } } Long begin = new Date().getTime(); for(int i=3;i<50000;i++){//插入数据 list.get(i); } Long end = new Date().getTime(); System.out.println("cost : " + (end - begin)+ " ms"); System.out.println("number:" + list.size()); } } /** *总结: *1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 *2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 *3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据 **/
以上是关于arraylist与linkedlist的区别与性能测试的主要内容,如果未能解决你的问题,请参考以下文章