ArrayList是Java中基于数组实现的动态集合,支持泛型、自动扩容及增删查改操作;需用包装类替代基本类型,初始化可指定容量以优化性能,遍历时推荐增强for或迭代器避免并发修改异常。

Java 中 ArrayList 是最常用的动态数组实现,它基于数组封装,支持自动扩容,能灵活地增删查改元素。
创建与初始化 ArrayList
ArrayList 属于泛型集合,声明时需指定元素类型(如 String、Integer),避免运行时类型错误。不能直接存储基本类型,要用其包装类(如 int → Integer)。
- 空参构造:ArrayList<String> list = new ArrayList<>(); —— 初始容量为 10
- 指定初始容量:new ArrayList<>(20) —— 减少频繁扩容开销,适合预估数据量的场景
- 用已有集合初始化:new ArrayList<>(Arrays.asList("a", "b", "c"))
添加与修改元素
add() 方法最常用,可追加到末尾,也可在指定索引插入;set() 用于替换已有位置的元素,要求索引合法(0 ≤ index < size)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- list.add("hello") —— 尾部添加
- list.add(0, "first") —— 在索引 0 处插入,原元素后移
- list.set(1, "replaced") —— 把索引 1 的元素替换成新值
- 注意:插入或设置时若索引越界(如 set(5, x) 但 size=3),会抛 IndexOutOfBoundsException
查询与遍历元素
get(index) 快速随机访问,时间复杂度 O(1);size() 返回当前元素个数;isEmpty() 判断是否为空。遍历时推荐增强 for 循环或迭代器,避免手动管理索引出错。
立即学习“Java免费学习笔记(深入)”;
- String s = list.get(2); —— 获取第 3 个元素
- for (String item : list) { System.out.println(item); } —— 简洁安全
- 使用 ListIterator 可双向遍历,还支持边遍历边 remove()/add()
删除与清空元素
remove() 有两个重载:remove(int index) 删除指定位置元素(后续元素前移);remove(Object o) 删除第一个匹配的对象(依赖 equals 比较)。clear() 彻底清空,但不释放底层数组空间(容量不变)。
- list.remove(0); —— 删除首元素
- list.remove("target"); —— 删除值为 "target" 的第一个元素
- list.clear(); —— size 变为 0,但内部数组仍存在,下次 add 可复用
- 注意:删除操作会导致结构变动,遍历时若用普通 for + remove,容易跳过元素或越界,应改用迭代器 remove()

















