ArrayList源码分析

  1. 本质:底层使用数组,超出数组容量后会扩容50%并将数据拷贝到新数组对应位置
  2. 序列化的优化:仅序列化存有元素的数据,不序列化未使用数组部分
  3. 使用modCount做简化的并发检测,并不能做到并发安全,可以控制使用迭代器时无法修改集合,仅能通过迭代器提供的操作进行处理
  4. Collection#toArray接口要求返回一个新的存有集合数据的数组,不能返回底层数组防止被意外修改影响原集合功能