LinkedList和ArrayList区别

 查询

LinkedList查询用的遍历,AyyayList查询用的是数组下标,所以对于查询ArrayList性能高于LinkedList

新增

新增在末尾或者中间就是ArrayList比LinkedList快,如果在最前面就是LinkedList比ArrayList快

测试一下新增在末尾

public static void main(String[] args){
          int flag = 100000;

ArrayList aList = new ArrayList(flag);

LinkedList lList = new LinkedList();
          Long start1 = System.currentTimeMillis();
          for(int i=0; i<flag;i++)
               aList.add("a");
          System.out.println(System.currentTimeMillis() - start1);
          Long start2 = System.currentTimeMillis();
          for(int i=0; i<flag;i++)
                lList.add("a");
          System.out.println(System.currentTimeMillis() - start2);
    }

测试一下新增在中间

public static void main(String[] args){
          int flag = 10000;
          ArrayList aList = new ArrayList(flag);
          LinkedList lList = new LinkedList();
          Long start1 = System.currentTimeMillis();
          for(int i=0; i<flag;i++){
               if(i < flag / 2)
                    aList.add("a");
               else
                    aList.add(flag / 2, "a");}
          System.out.println(System.currentTimeMillis() - start1);
          Long start2 = System.currentTimeMillis();
           for(int i=0; i<flag;i++){
               if(i < flag / 2)
                         lList.add("a");
               else
                        lList.add(flag / 2, "a");}
          System.out.println(System.currentTimeMillis() - start2);
    }

测试一下新增在开始

public static void main(String[] args){
           int flag = 10000;
           ArrayList aList = new ArrayList(flag);
           LinkedList lList = new LinkedList();
            Long start1 = System.currentTimeMillis();
             for(int i=0; i<flag;i++){
                   aList.add(0 ,"a");
              }
            System.out.println(System.currentTimeMillis() - start1);
            Long start2 = System.currentTimeMillis();
            for(int i=0; i<flag;i++){
                   lList.add(0 ,"add");
               }
            System.out.println(System.currentTimeMillis() - start2);
    }

修改

修改在末尾或者中间就是ArrayList比LinkedList快,如果在最前面就是LinkedList比ArrayList快

删除

删除ArrayList比LinkedList快

原文地址:https://www.cnblogs.com/jassy/p/9193062.html

时间: 2024-10-17 09:44:10

LinkedList和ArrayList区别的相关文章

LinkedList和ArrayList的区别

LinkedList和ArrayList的区别 LinkedList和ArrayList的差别主要来自于Array和LinkedList数据结构的不同.如果你很熟悉Array和LinkedList,你很容易得出下面的结论: 1) 因为Array是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的.Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据. 2) 相对于ArrayList,LinkedList插入是更快的.因为L

Java中LinkedList和ArrayList的区别

首先亮一下他们两个基本区别,面试的时候可以用来和面试官唠嗑啊 1.ArrayList实现了基本动态数组结构,Linked基于链表的结构.链表?什么是链表?答:"链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中指针连接次序实现的"注:此句话通过了科普中国百科科学词条编写与应用工作项目的审核. 2.对于get和set,ArrayList的性能优于LinkedList,因为Linked要移动指针,麻烦的很 3.对于add和remove,LinkedList要优

ArrayList和LinkedList有什么区别?

---恢复内容开始--- ArrayList和LinkedList都实现了List接口,但是: ArrayList是基于索引的数据接口,底层是数组,能够以O(1)时间复杂度随机访问元素.而LinkedList是以元素列表存储的数据,每一个元素都和它的前一个元素和后一个元素连接在一起,查找元素的时间复杂度是O(n). 相比于ArrayList,LinkedList的添加.查找.删除等操作执行速度更快,因为当元素被添加到集合的任意位置时,并不需要向数组那样重新计算大小或更新索引. LinkedLis

多线程对比linkedList和arrayList的add方法

上上一篇对linkedList和arrayList的源码对比:http://blog.csdn.net/aaashen/article/details/44925181 上一篇对linkedList和arrayList的各种方法进行单线程的对比:http://blog.csdn.net/aaashen/article/details/45011365 本篇用多线程对比,之对比add方法,插10000000条数据. 其中arrayList add 数据花费11615,linkedlist add数

【Stackoverflow好问题】LinkedList、ArrayList各自的使用场景,如何确认应该用哪一个呢?

问题 LinkedList.ArrayList各自的使用场景是什么,如何确认应该用哪一个呢? 精华回答 一言以蔽之,在大部分情况下,使用ArrayList会好一些. 一.耗时上各有优缺点.ArrayList稍有优势. List只是一个接口,而LinkedList.ArrayList是List的不同实现.LinkedList的模型是双向链表,而ArrayList则是动态数组 首先对比下常用操作的算法复杂度 LinkedList get(int index) : O(n) add(E element

JAVA LinkedList和ArrayList的使用及性能分析

第1部分 List概括List的框架图List 是一个接口,它继承于Collection的接口.它代表着有序的队列.AbstractList 是一个抽象类,它继承于AbstractCollection.AbstractList实现List接口中除size().get(int location)之外的函数.AbstractSequentialList 是一个抽象类,它继承于AbstractList.AbstractSequentialList 实现了“链表中,根据index索引值操作链表的全部函数

Difference between LinkedList vs ArrayList in Java

source-url LinkedList implements it with a doubly-linked list. ArrayList implements it with a dynamically resizing array. This will lead further differences in performance. Difference between LinkedList vs ArrayList in Java By Lokesh Gupta | Filed Un

hashMap与arrayList,linkedList,hashTable的区别

ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始 Hashtable和HashMap类有三个重要的不同之处.第一个不同主要是历史原因.Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现. 也许最重要的不同是Hashtable的

HashMap、HashTable、ArrayList、LinkedList、Vector区别

HashTable和HashMap区别 ①继承不同. public class Hashtable extends Dictionary implements Map public class HashMap extends AbstractMap implements Map ② Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的.在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了. ③ Hashtable