查询
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快