ArrayList or LinkedList



可能重复:
ArrayList与LinkedList
ArrayList与LinkedList哪一个更适合排序

假设我们有100个字符串(名称),并希望对它们进行排序,在ArrayList和LinkedList中,哪一个是首选的偏好的原因是什么?

使用Collections API进行排序无关紧要如果你看看Collections.sort:的实现

public static <T extends Comparable<? super T>> void sort(List<T> list) {
    Object[] a = list.toArray();
    Arrays.sort(a);
    ListIterator<T> i = list.listIterator();
    for (int j=0; j<a.length; j++) {
        i.next();
        i.set((T)a[j]);
    }
}

你可以看到它有以下作用:

  1. 使用List.toArray创建列表的副本
  2. 使用Arrays.sort方法对数组进行排序
  3. 更新列表(例如将数组复制回列表)

取决于哪种排序。

如果一开始要插入/检索/删除很多内容,那么ArrayList的速度会很慢。(大波纹)

如果要在索引处插入/检索/删除,则LinkedList的速度较慢。

http://commons.apache.org/collections/api-3.1/org/apache/commons/collections/list/TreeList.html

这让您了解每种类型的列表的操作速度。显然,根据你的数据,你可能会发现其中一个比另一个运行得更好(它们各有优缺点)。

应该根据发生的操作来选择实现。

请参见此处。

最新更新