【问题标题】:ArrayList or LinkedList [duplicate]ArrayList 或 LinkedList [重复]
【发布时间】:2012-03-24 01:32:18
【问题描述】:

可能重复:
ArrayList Vs LinkedList
ArrayList vs. LinkedList which one is better for sorting

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

【问题讨论】:

  • 只有 100 个元素,几乎可以肯定,您选择哪一个元素并不会造成盲目的差异。
  • @skaffman ..这是可以理解的...但我正在寻找通用答案..仅以 100 为例...可能我会以一百万为例.. .感谢输入

标签: java


【解决方案1】:

使用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. 更新列表(例如将数组复制回列表)

【讨论】:

  • 即使我也这么认为...感谢您消除疑虑!
【解决方案2】:

取决于什么样的排序。

如果您要在开头插入/检索/删除很多,ArrayLists 会很慢。 (大涟漪)

如果要在索引处插入/检索/删除,LinkedLists 会很慢。

【讨论】:

  • 感谢您的信息..即使这也是我正在寻找的
  • 除非您打算浪费时间从头开始实施排序算法,否则此信息对您没有帮助。即使这样做,通过将列表复制到数组并对数组进行排序,您可能会获得更有效的排序。
  • @StephenC 我不确定实现自己的排序是浪费时间......
  • @varatis - 在某些情况下它不是;例如如果您正在尝试学习排序。但是,在绝大多数情况中,您在实际进行编程时,您将无法比标准的 Java 排序实现或某些知名的第三方库做得更好。因此,这是浪费时间。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

    here

    【讨论】:

      猜你喜欢
      • 2014-09-17
      • 2021-12-19
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 2012-07-24
      • 2013-10-17
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多