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)
 
posted @ 2017-08-28 13:51  赵安之  阅读(153)  评论(0编辑  收藏  举报