java - Linkedlist 与 arraylist 的比较

标签 java list arraylist linked-list

我明白了LinkedList被实现为双链表。它在添加和删除方面的性能优于 Arraylist ,但 get 和 set 方法更糟糕。

这是否意味着我应该选择 LinkedList超过Arraylist用于插入?

我写了一个小测试,发现 ArrayList插入速度更快。那么链表怎么比ArrayList更快呢? ?

请引用下面我做的例子。

    import java.util.Date;
    import java.util.LinkedList;
    import java.util.List;

    public class TestLinkedList {

        public static void main(String[] args) {

            long lStartTime = new Date().getTime();
            System.out.println("lStartTime:: " + lStartTime);
            List<Integer> integerList = new LinkedList<Integer>();
            for (int i = 0; i < 10000000; i++) {
                integerList.add(i);
            }

            long lEndTime = new Date().getTime();
            System.out.println("lEndTime:: " + lEndTime);

            long difference = lEndTime - lStartTime;

            System.out.println("Elapsed milliseconds: " + difference);

        }

    }

最佳答案

LinkedList 的插入速度并不比 ArrayList 快。 ArrayList 由数组支持,因此插入元素很简单。插入 LinkedList 需要创建一个新的 Entry 实例,速度较慢。

唯一一次向 ArrayList 插入可能会变慢,因为插入会导致 ArrayList 容量增加,这需要创建一个新数组并使用旧数组数组复制到它。

关于java - Linkedlist 与 arraylist 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26737018/

相关文章:

java - 为什么 addAll() 不支持将集合的副本添加到集合中?

java - 整数溢出klocwork分析

c++ - C++-std::list.erase()不删除元素

python - 当我尝试从列表中删除元素时,如何忽略 ValueError?

java - 如何使用混合数据类型在泛型中初始化数组

java - 使代码在 x 以 y 开头时执行

java - 如果变量等于 1 (java)

java - 寻找 Rxjava 运算符将源合并到一个流中

list - 在 Flutter 中使用 Dart,如何添加到 map 列表内的 map 列表?

java - 在 arraylist<JPanel> 中添加 JPanel