arraylist是基于动态数组的数据结构
linkedList是基于链表的数据结构
在随机访问get,set的时候arraylist性能高于linkdlist 因为linkedList移动指针
在执行删除,新增操作时候linkedlist性能高于arraylist 因为arraylist移动数据
package com.company.list;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
* Created by zkc on 2017/7/13.
*/
public class ArrayListAndLinkList
{
static final int N=100000;
static long timeList(List list){
long start=System.currentTimeMillis();
Object o = new Object();
for(int i=0;i<N;i++) {
list.add(0, o);
}
return System.currentTimeMillis()-start;
}
static long readList(List list){
long start=System.currentTimeMillis();
for(int i=0,j=list.size();i<j;i++){
}
return System.currentTimeMillis()-start;
}
static List addList(List list){
Object o = new Object();
for(int i=0;i<N;i++) {
list.add(0, o);
}
return list;
}
public static void main(String[] args) {
System.out.println("ArrayList添加"+N+"条耗时:"+timeList(new ArrayList()));
System.out.println("LinkedList添加"+N+"条耗时:"+timeList(new LinkedList()));
List list1=addList(new ArrayList<>());
List list2=addList(new LinkedList<>());
System.out.println("ArrayList查找"+N+"条耗时:"+readList(list1));
System.out.println("LinkedList查找"+N+"条耗时:"+timeList(list2));
}
}
result:
ArrayList添加100000条耗时:1391
LinkedList添加100000条耗时:0
ArrayList查找100000条耗时:0
LinkedList查找100000条耗时:15