LinkedList和ArrayList區別
查詢
LinkedList查詢用的遍歷,AyyayList查詢用的是數組下標,所以對於查詢ArrayList性能高於LinkedList
新增
新增在末尾或者中間就是ArrayList比LinkedList快,如果在最前面就是LinkedList比ArrayList快
測試一下新增在末尾
public static void main(String[] args){
int flag = 100000;
ArrayList aList = new ArrayList(flag);
LinkedList lList = new LinkedList();
Long start1 = System.currentTimeMillis();
for(int i=0; i<flag;i++)
aList.add("a");
System.out.println(System.currentTimeMillis() - start1);
Long start2 = System.currentTimeMillis();
for(int i=0; i<flag;i++)
lList.add("a");
System.out.println(System.currentTimeMillis() - start2);
}
測試一下新增在中間
public static void main(String[] args){
int flag = 10000;
ArrayList aList = new ArrayList(flag);
LinkedList lList = new LinkedList();
Long start1 = System.currentTimeMillis();
for(int i=0; i<flag;i++){
if(i < flag / 2)
aList.add("a");
else
aList.add(flag / 2, "a");}
System.out.println(System.currentTimeMillis() - start1);
Long start2 = System.currentTimeMillis();
for(int i=0; i<flag;i++){
if(i < flag / 2)
lList.add("a");
else
lList.add(flag / 2, "a");}
System.out.println(System.currentTimeMillis() - start2);
}
測試一下新增在開始
public static void main(String[] args){
int flag = 10000;
ArrayList aList = new ArrayList(flag);
LinkedList lList = new LinkedList();
Long start1 = System.currentTimeMillis();
for(int i=0; i<flag;i++){
aList.add(0 ,"a");
}
System.out.println(System.currentTimeMillis() - start1);
Long start2 = System.currentTimeMillis();
for(int i=0; i<flag;i++){
lList.add(0 ,"add");
}
System.out.println(System.currentTimeMillis() - start2);
}
修改
修改在末尾或者中間就是ArrayList比LinkedList快,如果在最前面就是LinkedList比ArrayList快
刪除
刪除ArrayList比LinkedList快
LinkedList和ArrayList區別