列出插入效率

时间:2015-09-09 08:39:27

标签: java data-structures

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

在这种情况下,List接口的所有不同实现如何表现?选择一种实施方式时,有哪些优点和缺点?

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

Collections.sort(List list);

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

答案 2 :(得分:0)

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

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

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