import java.util.*; import java.lang.Class; /* * @desc 对比ArrayList和LinkedList的插入、随机读取效率、删除的效率 * * @author skywang */ publicclassListCompareTest { privatestatic final int COUNT = 100000; privatestatic LinkedList linkedList = new LinkedList(); privatestatic ArrayList arrayList = new ArrayList(); privatestatic Vector vector = new Vector(); privatestatic Stack stack = new Stack(); publicstaticvoidmain(String[] args){ // 换行符 System.out.println(); // 插入 insertByPosition(stack) ; insertByPosition(vector) ; insertByPosition(linkedList) ; insertByPosition(arrayList) ; // 换行符 System.out.println(); // 随机读取 readByPosition(stack); readByPosition(vector); readByPosition(linkedList); readByPosition(arrayList); // 换行符 System.out.println(); // 删除 deleteByPosition(stack); deleteByPosition(vector); deleteByPosition(linkedList); deleteByPosition(arrayList); } // 获取list的名称 privatestatic String getListName(List list){ if (list instanceof LinkedList) { return'LinkedList'; } elseif (list instanceof ArrayList) { return'ArrayList'; } elseif (list instanceof Stack) { return'Stack'; } elseif (list instanceof Vector) { return'Vector'; } else { return'List'; } } // 向list的指定位置插入COUNT个元素,并统计时间 privatestaticvoidinsertByPosition(List list){ long startTime = System.currentTimeMillis(); // 向list的位置0插入COUNT个数 for (int i=0; i list.add(0, i); long endTime = System.currentTimeMillis(); long interval = endTime - startTime; System.out.println(getListName(list) + ' : insert '+COUNT+' elements into the 1st position use time:' + interval+' ms'); } // 从list的指定位置删除COUNT个元素,并统计时间 privatestaticvoiddeleteByPosition(List list){ long startTime = System.currentTimeMillis(); // 删除list第一个位置元素 for (int i=0; i list.remove(0); long endTime = System.currentTimeMillis(); long interval = endTime - startTime; System.out.println(getListName(list) + ' : delete '+COUNT+' elements from the 1st position use time:' + interval+' ms'); } // 根据position,不断从list中读取元素,并统计时间 privatestaticvoidreadByPosition(List list){ long startTime = System.currentTimeMillis(); // 读取list元素 for (int i=0; i list.get(i); long endTime = System.currentTimeMillis(); long interval = endTime - startTime; System.out.println(getListName(list) + ' : read '+COUNT+' elements by position use time:' + interval+' ms'); } }
运行结果如下:
Stack : insert100000 elements into the 1st positionusetime:1640 ms Vector : insert100000 elements into the 1st positionusetime:1607 ms LinkedList : insert100000 elements into the 1st positionusetime:29 ms ArrayList : insert100000 elements into the 1st positionusetime:1617 ms Stack : read100000 elements bypositionusetime:9 ms Vector : read100000 elements bypositionusetime:6 ms LinkedList : read100000 elements bypositionusetime:10809 ms ArrayList : read100000 elements bypositionusetime:5 ms Stack : delete100000 elements from the 1st positionusetime:1916 ms Vector : delete100000 elements from the 1st positionusetime:1910 ms LinkedList : delete100000 elements from the 1st positionusetime:15 ms ArrayList : delete100000 elements from the 1st positionusetime:1909 ms