import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Random;
public class Main {
public static void main(String[] args) throws Exception{
// ArrayList<Integer> al=new ArrayList<Integer>();
LinkedList<Integer> al=new LinkedList<Integer>();
// for(int i=0;i<1000000;i++) {
// al.add(i);//输出分别是Array花费了40ms——Linked花费了1000ms
// }
// for(int i:al) {
// //Array花费了7ms——Linked花费了15ms
// }
// Random ra=new Random();//Array花费了650ms——Linked花费了 1770ms
// int x=0;
// for(int i=0;i<20000;i++){
// x=ra.nextInt(10000);
// int pi=0;
// for(int num:al) {
// if(x>num) {
// al.add(pi,x);
// break;
// }
// pi++;
// }
// if(pi==al.size())
// al.add(x);
// }
long t1=System.currentTimeMillis();
long t2=System.currentTimeMillis();
System.out.println(t2-t1);
}
}
无论是集合里增加数据增加,还是迭代器遍历,还是迭代器排序,linkedlist都比arraylist慢的多。
时间使用情况表明,对于算法入门级别的人来说,在数据量大,且简单的时候(非项目),大多数情况下,ArrayList都比LinkedList快速的多。
当然在以后做项目的时候,或者真正遇到很复杂的算法问题时,就不清楚了。、
而根据数据结构里的知识得知:
虽然增删来说,linkedlist要比arraylist效率的多,但是linked每一个结点的信息构造是比array要复杂的多,哪怕同样一次增删,linked的任务仅仅是清除这个结点的前后结点的后驱地址和前驱地址,但是这个工作量依旧比数组的节点移位要复杂的多。