List&ArrayList&LinkedList

Collection接口
    |--List:元素是有序的,元素可以重复。因为该集合体系有索引。
        |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
        |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
        |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
 
collection共有的一些方法

     
ArrayList的常用方法
 
LinkedList常用方法

ArrayList和linkedlist进行对比:
     构造一个拥有100万数据的ArrayList和等价的LinkedList,使用以上代码进行测试,测试结果的相对耗时如下表所示:
     
可以看到,最简便的ForEach循环并没有很好的性能表现,综合性能不如普通的迭代器,而是用for循环通过随机访问遍历列表时,
ArrayList表项很好,但是LinkedList的表现却无法让人接受,甚至没有办法等待程序的结束。
这是因为对LinkedList进行随机访问时,总会进行一次列表的遍历操作。性能非常差,应避免使用。
 
ArrayList查询比较快
linkedlist增删比较快,它的remove方法底层同样是遍历元素,找到符合的,那么remove(object),是O(N),remove(index)是O(N/2)=O(N)
          理论上是O(1)
 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(zxy.hope@gmail.com)咨询.
原文地址:https://www.cnblogs.com/anzhi/p/7443560.html