【发布时间】:2015-08-15 11:23:52
【问题描述】:
根据下面的程序,ArrayList 中的插入和删除比 LinkedList 快。请提供证据证明 LinkedList 中的插入和删除应该比 ArrayList 更快。
public static void main(String args[]) {
ArrayList al = new ArrayList();
LinkedList ll = new LinkedList();
int max_value = 10000000;
// --------------------------------ArrayList-----------------------------------
for (int i = 0; i <= max_value; i++) {
ll.add(Integer.valueOf(i));
al.add(Integer.valueOf(i));
}
int middle = max_value / 2;
long d1 = System.currentTimeMillis();
al.add(middle,Integer.valueOf(5));
al.add(middle,Integer.valueOf(5));
al.remove(middle);
al.add(middle,Integer.valueOf(5));
al.remove(middle);
al.add(middle,Integer.valueOf(5));
al.remove(middle);
al.add(middle,Integer.valueOf(5));
al.remove(middle);
al.add(middle,Integer.valueOf(5));
long d2 = System.currentTimeMillis();
System.out.println("Time Taken in ArrayList: " + (d2 - d1));
// --------------------------------LinkedList-----------------------------------
long d3 = System.currentTimeMillis();
ll.add(middle,Integer.valueOf(5));
ll.add(middle,Integer.valueOf(5));
ll.remove(middle);
ll.add(middle,Integer.valueOf(5));
ll.remove(middle);
ll.add(middle,Integer.valueOf(5));
ll.remove(middle);
ll.add(middle,Integer.valueOf(5));
ll.remove(middle);
ll.add(middle,Integer.valueOf(5));
long d4 = System.currentTimeMillis();
System.out.println("Time Taken in LinkedList: " + (d4 - d3));
}
输出:
ArrayList 所用时间:38 链表耗时:537
【问题讨论】:
-
Please provide me the proof of the fact that Insertion and deletion should be faster in LinkedList than ArrayList.为什么你认为linkedlist中的插入更快? -
您能否引用该文档的哪一部分说在中间插入
linkedlist比Arraylist快?
标签: java arraylist linked-list