面试准备 集合 List

ArrayList

底层实现

使用Object[] 动态数组进行存储

特性

  • 支持存储null值
  • 非线程安全
  • 支持快速访问

初始化方法

  • 无参--返回一个空的列表(DEFAULTCAPACITY_EMPTY_ELEMENTDATA)
  • 指定初始容量: new ArrayList(20);
  • 指定集合 new ArrayList(collection);

扩容

  1. 如果是使用无参构造方法进行初始化的,当添加第一个元素时,扩容成10;
  2. 当下一次超出容量时,扩容为上次容量的1.5倍
  3. 批量添加会出发多次扩容(10->25->...)

遍历方式

  • for-each(本质上是使用迭代器)
java 复制代码
for(String s : list)
  • for循环
  • 迭代器(单线程下遍历时修改不会引起异常)
java 复制代码
Iterator(String) it = list.iterator();
while(it.hasnext()) {
print(it.next);
}
相关推荐
不见长安见晨雾32 分钟前
将Java程序打包成EXE程序
java·开发语言
逸狼1 小时前
【JavaEE初阶】多线程(5 单例模式 \ 阻塞队列)
java·开发语言
希忘auto2 小时前
Java之线程篇四
java
蓝黑20202 小时前
Java知识点小结3:内存回收
java·gc
Yz98762 小时前
Hadoop里面MapReduce的序列化与Java序列化比较
java·大数据·jvm·hadoop·分布式·mapreduce·big data
凯哥Java2 小时前
优化批处理流程:自定义BatchProcessorUtils的设计与应用
java·数据库·mysql
mingzhi612 小时前
应届生必看 | 毕业第一份工作干销售好不好?
网络·web安全·面试
njnu@liyong3 小时前
AOP-前置原理-怎么判断和拦截?
java·aop·拦截
末央&3 小时前
【C++】内存管理
java·开发语言·c++
八了个戒3 小时前
【TypeScript入坑】TypeScript 的复杂类型「Interface 接口、class类、Enum枚举、Generics泛型、类型断言」
开发语言·前端·javascript·面试·typescript