与ArrayList相比,LinkedList元素插入更快

时间:2017-07-21 06:40:33

标签: java arraylist linked-list

 public class program {


   public static void main (String [] args) {
    ArrayList Arraylist = new ArrayList();
    long elements_to_fill = (long) 1E7;

    long Current_milies = (long) System.currentTimeMillis();


    for (int i = 0; i < elements_to_fill; i++) {
       Arraylist.add(i);
   }

    System.out.println("Insertion in array list takes " + (System.currentTimeMillis()-Current_milies) + " ms");


    LinkedList linkedlist = new LinkedList();

   Current_milies = ( long ) System.currentTimeMillis();

   for (int i = 0; i <elements_to_fill; i++) {
       linkedlist.add(i);
   }

   System.out.println("insertion in linked list take " + (System.currentTimeMillis() - Current_milies) + " ms");

 }
}

输出:

  

在数组列表中插入需要3652 ms

     

插入是链接列表需要6862毫秒

long elements_to_fill = (long) 1E5;

相同

输出:

  

在数组列表中插入需要16 ms

     链接列表中的

插入需要8毫秒

如果我们添加1E7元素

,插入是数组列表与链表相比花费更少的时间

但另一方面,如果我们在插入中添加1E7元素而不是插入,则与链表相比,数组列表需要更多时间。为什么会这样?

1 个答案:

答案 0 :(得分:0)

  • pt-find:索引缓慢访问,头部有效插入/删除,使用更多内存,大多数情况下速度较慢;
  • LinkedList:通过索引快速访问,在头部缓慢插入/删除,有效使用内存,在大多数情况下更快。尝试仅在第一个位置添加元素,而不仅仅在结尾处添加元素 正如XtremeBaumer的评论
  • 所述

示例如果您更改为(使用ArrayList(而不是E7)):

1E5 elements

这些数字让你满意吗?