ArrayList:

ArrayList是一个可变数组实现,实现了List接口的所有方法,并允许存取null值.ArrayList基本上等同与Vector,但它只对writeObject()和readObject()进行了同步.

1.  ArrayList使用一个Object的数组存储元素.private transient E[] elementData;  序列化是为了反序列化,当你反序列化时,这些对象的引用已经不可能指向原来的对象了.所以要    手工对ArrayList的元素进行序列化操作,这就是writeObject()的作用.

2.自动变长机制。每个add()方法中,都首先调用一个ensureCapacity(int miniCapacity)方法,这个方法保证elementData数组的长度不小于miniCapacity,ArrayList的自动变长机制就  是在这个方法中实现的.每次扩容都扩大到原来的1.5倍。

3.快速失败迭代器。在父类AbstractList中定义了一个int型的属性:modCount,记录了ArrayList结构性变化的次数.在ArrayList的所有涉及结构变化的方法中都增加modCount的值,包     括:add(),remove(),addAll(),removeRange()及clear()方法.这些方法每调用一次,modCount的值就会加1. 注:add()及addAll()方法的modCount的值是在其中调用的              ensureCapacity()方法中增加的.目的就是检测出现问题时,及时报告错误,抛出异常。

LinkedList:

LinkedList 是基于链表实现的.所以在类中包含了 first 和 last 两个指针(Node)。Node 中包含了上一个节点和下一个节点的引用,这样就构成了双向的链表。链表的基本特性是插入速度快(要大量数据才能比ArrayList有优势),遍历速度慢。

1.迭代器的快速失败.

详细链接:http://blog.csdn.net/zheng0518/article/details/42198599

最新文章

  1. 开源遥感平台opticks插件开发指南
  2. Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.
  3. NYOJ题目889求距离
  4. ZOJ 2753 Min Cut (Destroy Trade Net)(无向图全局最小割)
  5. 【树莓派2B倒腾日志】之安装系统及配置
  6. 字符串反转实现(C++)
  7. 【HDOJ】1903 Exchange Rates
  8. JavaScript基础:创建对象
  9. raft协议安全性保证
  10. linux libpcap的性能问题,请大家注意绕行。
  11. 集群技术(二) MySQL集群简介与配置详解
  12. 定义范围中的备选方案生成、横向思维、创建WBS、工作包定义、WBS、确认范围过程和实施质量过程的关系、联合应用设计和质量功能展开QFD
  13. vue 项目中引用百度地图
  14. Android studio 远程服务调用
  15. 详解angular2组件中的变化检测机制(对比angular1的脏检测)
  16. sqlserver2008R2 全日志恢复 实例操作
  17. 30个redis.conf 配置项说明
  18. Win32 实现 MFC CFileDialog 对话框
  19. xgCalendar在ASP.NET中的使用
  20. java基础-day4

热门文章

  1. nginx/ajax跨子域请求的两种现代方法以及403解决
  2. 20145314郑凯杰《网络对抗技术》恶意DLL注入进程(进程捆绑)的实现
  3. tf.placeholder使用说明
  4. STM32.SPI(25Q16)
  5. tomcat部署项目如何去掉项目名称
  6. Visual Studio 项目模板制作(四)
  7. YOLOv2-darknet 内容解析
  8. UVa 12627 奇怪的气球膨胀(分治)
  9. jquery和bootstrap获取checkbox选中的多行数据
  10. hdu 2586 How far away ? 带权lca