Java 集合实战:ArrayList 与 LinkedList 核心差异解析
大家通常都知道 ArrayList 基于动态数组,LinkedList 基于链表。但在实际开发中,什么时候该用哪个?这得看具体场景。
性能表现:时间与空间
随机访问效率 ArrayList 内部是数组结构,通过下标访问元素是 O(1) 的。而 LinkedList 需要从头遍历,是 O(n)。 举个例子,如果要对一个有序列表进行二分查找,ArrayList 的优势非常明显。
public class TestList {
private static final int N = 50000;
private static List<Integer> values;
static {
Integer[] vals = new Integer[N];
Random r = new Random();
int currVal = 0;
for (int i = 0; i < N; i++) {
vals[i] = new Integer(currVal);
currVal += r.nextInt(100) + 1;
}
values = Arrays.asList(vals);
}
private static long timeList(List<Integer> lst) {
long start = System.currentTimeMillis();
for (int ; i < N; i++) {
Collections.binarySearch(lst, values.get(i));
(index != i) {
System.out.println();
}
}
System.currentTimeMillis() - start;
}
{
System.out.println( + timeList( <>(values)));
System.out.println( + timeList( <>(values)));
}
}

