ArrayList类和LinkedList类
List ADT 有两种流行的实现方式,ArrayList类与LinkedList类。
ArrayList类提供了List ADT 的一种可增长数组的实现。使用ArrayList的优点在于,对get和set的调用花费常数时间。缺点是对于新项的插入和现有项的删除代价昂贵。除非更改是发生在末端的。
LinkedList类则提供了List ADT 的双向链表的实现。使用LinkedList的优点在于,新项的插入和现有项的删除开销很小,缺点则是get和set的开销很大,除非接近端点。
下面用一些方法来使结论更明显:
public static void makeList(List<Integer> lst, int N) {
lst.clear();
for (int i = 0; i < N; i++) {
lst.add(i);
}
}
Type | Time |
---|---|
ArrayList | O(N) |
LinkedList | O(N) |