为了弄清楚 LinkedList 与ArrayList的性能差异,特作了以下几组测试:
一 各插入一百万条数据:
以下是测试LinkedList:







































测试结果是 1562毫秒
接着测试 ArrayList





















































测试结果是 812毫秒。
可见在插数据时 LinkedList 要快于 ArrayList。接下来测试删除数据的性能。
二:在用例一的基础上删除接近一百万条数据
以下是测试LinkedList:
















































测试结果是 141毫秒。
接着测试 ArrayList






























































测试结果令我们大吃一惊,竟然用了4087多秒。
那为什么会出现这样的情况呢?这就要求我们充分理解 LinkedList 与ArrayList。
LinkedList 是一个双向链表,一个元素有一个对他之前的元素的引用和一个对他之后的元素的引用,在插数据的时候必须对新的元素建立对之前和之后的元素的引用。而ArrayList只是一个数组,在插数据的时候只是将元素方在这个数组的最后,较LinkedList 应该是化的时间少一点,所以在插数据的时候ArrayList稍快于LinkedList 。LinkedList 在删除某个元素的时候,只是删除这个元素的对他之前和之后的元素的引用,而ArrayList由于是一个数组,如果这个要删除的元素不是位于最末端(我们上面的这个例子就是这种情况),那它必须将这个元素后面的每一个元素都往前移一个位置。这个开销是相当大的。所以会出现我们上面测试的那种结果。