可能重复:
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]);
}
}
你可以看到它有以下作用:
- 使用
List.toArray
创建列表的副本 - 使用
Arrays.sort
方法对数组进行排序 - 更新列表(例如将数组复制回列表)
取决于哪种排序。
如果一开始要插入/检索/删除很多内容,那么ArrayList的速度会很慢。(大波纹)
如果要在索引处插入/检索/删除,则LinkedList的速度较慢。
http://commons.apache.org/collections/api-3.1/org/apache/commons/collections/list/TreeList.html
这让您了解每种类型的列表的操作速度。显然,根据你的数据,你可能会发现其中一个比另一个运行得更好(它们各有优缺点)。
应该根据发生的操作来选择实现。
请参见此处。