Arraylist 与 LinkedList 区别

 结构上的区别

ArrayList底层实现基于动态数组,LinkedList底层实现基于双向链表。

 性能上区别

ArrayList查询快,增删慢,LinkedList增删快,查询慢

ArrayList和LinkedList都是非线程安全的

遍历列表:

    常用的遍历列表有三种方法,分别为foreach、迭代器、for循环

    构造一个拥有100万数据的ArrayList和等价的LinkedList,测试结果的相对耗时如下表所示:

List类型  forEach  迭代器  for循环
ArrayList 110ms 81ms 16ms
LinkedList 78ms 15ms  很久

可以看到,最简便的ForEach循环并没有很好的性能表现,综合性能不如普通的迭代器,而是用for循环通过随机访问遍历列表时,ArrayList表项很好,但是LinkedList的表现却无法让人接受,甚至没有办法等待程序的结束。这是因为对LinkedList进行随机访问时,总会进行一次列表的遍历操作。性能非常差,应避免使用。    

 要注意的地方

1.ArrayList是基于数组实现的,如果不指定大小,会有个默认值,当空间不足时,每次扩容1.5倍,调用System.arraycopy(),如果arrayList存储数据较大,不指定具体大小,会很影响性能。

2.LinkedList删除时候,先要遍历找到该节点,如果该节点在中间,数据量还比较大的话,性能较差。

最新文章

  1. 初试PHP单元测试TDD之安装PHPUnit
  2. BZOJ4583 : 购物
  3. windows 7下qtcreator里QWT文件的pro配置
  4. 使用commons-fileupload包进行大文件上传注意事项
  5. VC++6.0MFC运行的简单流程
  6. JSTL分类查询
  7. Setting property 'source' to 'org.eclipse.jst.jee.server
  8. Mysql命令大全&&指定端口登录
  9. sparkSQL1.1入门
  10. Yii Listview 更新及搜索
  11. 图像编程学习笔记2——bmp位图平移
  12. JS中几种常见的数组算法(前端面试必看)
  13. 51NOD 1584 加权约数和 [莫比乌斯反演 转化 Trick]
  14. PHP 5 全局变量 - 超全局变量
  15. 手动实现Promise
  16. 转载:2.2 Nginx配置的通用语法《深入理解Nginx》(陶辉)
  17. myeclipse项目 不能打开
  18. 2.2 linux中的信号分析
  19. jquery ui中的dialog,官网上经典的例子
  20. python匿名函数 高阶函数 内置函数 文件操作

热门文章

  1. 精确率与回召率与 F1-Meature
  2. windows环境变量和相关命令操作
  3. C语言 STL中qsort用法
  4. mybaites 入门到精通
  5. PAT Basic 1012 数字分类 (20 分)
  6. BZOJ4004 [JLOI2015]装备购买[贪心+线性基+高消]
  7. K8S概念
  8. 【LuoguP5383】[模板]普通多项式转下降幂多项式
  9. 动软代码生成器生成model
  10. vue-router嵌套路由,二级路由。