今天随便做了个测试,没有发现LinkedList在添加没有比ArrayList快多少,而且当我们循环数据加到1千万以上时还会出现内存不够用的情况!难道是我的测试有问题,希望大家发表各自的看法!谢谢! public static void main(String []args){
ArrayList arr = new ArrayList();
LinkedList link = new LinkedList();
long arrAddStrat = System.currentTimeMillis();
for(int i=0;i<10000;i++){
arr.add(i);
}
System.out.println("arr添加用时===========");
System.out.println(System.currentTimeMillis()-arrAddStrat);
long linkAddStart = System.currentTimeMillis();
for(int i=0;i<10000;i++){
link.add(i);
}
System.out.println("linked添加用时===========");
System.out.println(System.currentTimeMillis()-linkAddStart);
long arrOutStart = System.currentTimeMillis();
for(int i=0,size=arr.size();i<size;i++){
arr.get(i);
}
System.out.println("arr输出用时");
System.out.println(System.currentTimeMillis()-arrOutStart); long linkOutStart = System.currentTimeMillis();
for(int i=0,size=link.size();i<size;i++){
link.get(i);
}
System.out.println("link输出用时");
System.out.println(System.currentTimeMillis()-linkOutStart);
}
ArrayList arr = new ArrayList();
LinkedList link = new LinkedList();
long arrAddStrat = System.currentTimeMillis();
for(int i=0;i<10000;i++){
arr.add(i);
}
System.out.println("arr添加用时===========");
System.out.println(System.currentTimeMillis()-arrAddStrat);
long linkAddStart = System.currentTimeMillis();
for(int i=0;i<10000;i++){
link.add(i);
}
System.out.println("linked添加用时===========");
System.out.println(System.currentTimeMillis()-linkAddStart);
long arrOutStart = System.currentTimeMillis();
for(int i=0,size=arr.size();i<size;i++){
arr.get(i);
}
System.out.println("arr输出用时");
System.out.println(System.currentTimeMillis()-arrOutStart); long linkOutStart = System.currentTimeMillis();
for(int i=0,size=link.size();i<size;i++){
link.get(i);
}
System.out.println("link输出用时");
System.out.println(System.currentTimeMillis()-linkOutStart);
}
LinkedList肯定add(i, obj) 快。 //i不是末尾
链表式的LinkedList内部是类似于指针这样的对象来保持连接的 就比如 a→b a,b是对象,→也是对象
所以会出现这样的错误。可以多读读jdk源码。