欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ArrayList源码解析和设计思路

程序员文章站 2022-05-06 08:48:54
...
transient Object[] elementData; // non-private to simplify nested class access
  • ArrayList无参构造器初始化时,默认大小是空数组,第一次add的时候扩容的数值是10

初始化

三种初始化方式:无参初始化、指定大小初始化、指定初始数据初始化

新增和扩容

扩容本质

删除

迭代器

  • hasNext 还是否可以迭代 当cursor的值等于长度值的时候,说明到最后了
  • next 检验能不能继续迭代、找到迭代的值,并为下一次迭代做准备
  • remove lastRet=-1防止重复删除 删除之后expectedModCount需要修改

时间复杂度

新增和删除时间复杂度都为O(1)

线程安全

推荐用Collections#synchronizedList来保证线程安全

相关标签: 每天一道面试题