zoukankan      html  css  js  c++  java
  • 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)咨询.
  • 相关阅读:
    Linux常用命令(二)
    C#异步调用
    Ajax运用总结
    SQL Server2005 FOR XML PATH 语句的应用
    SQL Server 2005 处理交叉表
    如何控制并发和控制死锁(内含pb的处理要点)
    WPF 中的换行符
    C#委托的异步调用
    pivot 附近有语法错误,您可能需要将当前数据库的兼容级别设置为更高的值。
    应用系统BUG分布小结
  • 原文地址:https://www.cnblogs.com/anzhi/p/7443560.html
Copyright © 2011-2022 走看看