【问题标题】:List insertion efficency [duplicate]列表插入效率[重复]
【发布时间】:2015-09-09 08:39:27
【问题描述】:

我必须对一个大列表(超过 10,000 个元素)进行排序。添加元素时,我必须将其插入正确的位置。我看到ArrayList 将移动插入点之后的所有元素。

List 接口的所有不同实现在这种情况下如何表现?选择一种实现方式而不是另一种实现方式的优缺点是什么?

【问题讨论】:

    标签: java data-structures


    【解决方案1】:

    List 的两个主要实现是ArrayListLinkedList。还有其他的,但它们通常用于特殊情况。

    ArrayList 可以通过索引快速访问,因为它由数组支持 - 您只需要 array[i] - 但修改列表需要移动大部分底层数组,因此效率不高。

    您可以使用LinkedList 非常有效地添加/删除项目,但查找nth 条目很慢,因为它必须从头部开始并遍历列表计数节点,直到到达所需位置。

    【讨论】:

      【解决方案2】:

      可能重复,但我会给你一个提示。

      要对数据进行排序,您可以使用:

      Collections.sort(List list);
      

      方法,它无论如何都会将 List 转换为 Array,所以你不必太关心 List 实现的类型。它所需要的只是在您的对象中实现的接口 Comparable。

      【讨论】:

        【解决方案3】:

        您的数据可以包含重复项吗?

        如果否,您可以使用TreeSet<?>

        如果是,您可以使用TreeMap<?, Integer>,其中整数是每个项目的计数

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-22
          • 2013-04-18
          • 1970-01-01
          • 2011-08-07
          • 2012-09-23
          • 2018-12-31
          • 1970-01-01
          相关资源
          最近更新 更多