其中有一條,叫做
ArrayList底層是使用數組實現的,因此隨機讀取數據會比LinkedList快很多,而LinkedList是使用鏈表實現的,新增和刪除數據的速度比ArrayList快不少。
這句話當然木有問題啦,在提出帖子標題的時候,樓主也想罵自己是逗比。不過想想,似乎在日常寫代碼的時候,伴隨“新增和刪除”之前的操作,往往是“隨機訪問”(如果是因爲我代碼量少產生的錯覺,各位大牛勿噴)
既然這樣,那麼LinkedList真比ArrayList快嘛?
換句話說,
隨機訪問+數組元素複製 VS 尋址+插入刪除 哪個更快?
忽略掉那一個元素,也就是元素的複製和尋址,哪個更快?
package test2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Random;
public class Array_link {
public static void main(String[] args)
{
long arrListTime = 0 ;
long linkListTime = 0 ;
Integer[] ia1 = new Integer[1000000];
for(int i= 0;i<1000000;i++)
{
ia1[i] = i;
}
Random random = new Random();
ArrayList array = new ArrayList<Integer>(Arrays.asList(ia1));
LinkedList link = new LinkedList<Integer>(Arrays.asList(ia1));
for(int i=0;i<10000;i++)
{
int r = random.nextInt(array.size());
long arrTime = System.currentTimeMillis();
array.remove(r);
arrListTime =arrListTime + System.currentTimeMillis() - arrTime;
long linkTime = System.currentTimeMillis();
link.remove(r);
linkListTime =linkListTime + System.currentTimeMillis() - linkTime;
}
System.out.println("ArrayList time-consuming:"+ arrListTime);
System.out.println("LinkedList time-consuming:"+ linkListTime);
}
}
結果爲
LinkedList time-consuming:40693