2026/5/19 4:43:17
网站建设
项目流程
深圳福永网站建设公司,研发app大概要多少钱,有没有个人网站,酒店营销策略一、什么是 ArrayListArrayList 是 java.util 包下的类#xff0c;实现了 List 接口#xff0c;本质是动态扩容的数组#xff08;相比普通数组#xff0c;它的长度可以自动调整#xff09;。底层基于数组实现#xff0c;支持快速随机访问#xff08;通过索引取值#x…一、什么是 ArrayListArrayList是java.util包下的类实现了List接口本质是动态扩容的数组相比普通数组它的长度可以自动调整。底层基于数组实现支持快速随机访问通过索引取值时间复杂度 O (1)。增删元素尤其是中间位置效率较低需要移动元素时间复杂度 O (n)。允许存储null值且元素可重复有序按添加顺序保存。二、核心用法完整示例代码以下是ArrayList最常用的操作代码可直接复制运行import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ArrayListDemo { public static void main(String[] args) { // 1. 创建 ArrayList 对象指定泛型推荐避免类型转换问题 ListString list new ArrayList(); // 2. 添加元素 list.add(Java); // 末尾添加 list.add(Python); list.add(1, C); // 指定索引1添加原索引1及之后的元素后移 System.out.println(添加后 list); // 输出[Java, C, Python] // 3. 获取元素 String first list.get(0); // 通过索引获取索引从0开始 System.out.println(第一个元素 first); // 输出Java // 4. 修改元素 list.set(2, Go); // 替换索引2的元素 System.out.println(修改后 list); // 输出[Java, C, Go] // 5. 删除元素 list.remove(1); // 按索引删除 list.remove(Go); // 按元素值删除 System.out.println(删除后 list); // 输出[Java] // 6. 遍历元素三种常用方式 // 方式1for循环按索引 System.out.println(for循环遍历); for (int i 0; i list.size(); i) { System.out.println(list.get(i)); } // 方式2增强for循环 System.out.println(增强for循环遍历); for (String s : list) { System.out.println(s); } // 方式3迭代器 System.out.println(迭代器遍历); IteratorString it list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } // 7. 其他常用方法 int size list.size(); // 获取元素个数 boolean isEmpty list.isEmpty(); // 判断是否为空 boolean contains list.contains(Java); // 判断是否包含某个元素 list.clear(); // 清空所有元素 } }三、关键特性解析扩容机制初始容量默认是 10JDK8 及以上当元素个数超过当前容量时会自动扩容为原来的1.5 倍计算方式newCapacity oldCapacity (oldCapacity 1)。如果提前知道元素数量可通过new ArrayList(指定容量)初始化减少扩容次数提升性能。线程安全ArrayList是非线程安全的如果多线程同时读写ArrayList可能会导致数据错乱。线程安全场景可使用Vector古老的线程安全版效率低、Collections.synchronizedList(new ArrayList())、CopyOnWriteArrayList高并发读场景推荐。与普通数组的区别特性ArrayList普通数组长度动态扩容固定长度方法支持丰富add/remove 等仅通过索引操作存储类型只能存对象基本类型自动装箱可存基本类型 / 对象四、常见面试 / 使用注意点遍历删除元素不能在增强 for 循环中直接删除元素会抛ConcurrentModificationException需用迭代器的it.remove()方法。示例ListString list new ArrayList(); list.add(a); list.add(b); IteratorString it list.iterator(); while (it.hasNext()) { String s it.next(); if (s.equals(a)) { it.remove(); // 正确删除方式 } }空指针风险list.get(index)时若索引越界如 index list.size ()会抛IndexOutOfBoundsException使用前需校验索引合法性。总结ArrayList是基于动态数组的 List 实现支持快速随机访问增删中间元素效率低有序、可重复、允许 null。核心操作包括添加add、获取get、修改set、删除remove、遍历推荐指定泛型避免类型转换问题。非线程安全扩容默认 1.5 倍遍历删除需用迭代器提前指定容量可优化性能。