四、ArrayList 常用方法实战 —— 从添加到遍历的全场景覆盖
ArrayList 提供了数十个方法,但日常开发中常用的只有 10 个左右,我们按 “元素操作”“集合查询”“遍历方式” 三类来梳理,每个方法都附带示例和注意事项。
4.1 元素添加:add () 与 addAll ()
添加元素是 ArrayList 最基础的操作,核心方法有两个:add(E e)(添加单个元素到尾部)和addAll(Collection<? extends E> c)(添加另一个集合的所有元素到尾部)。
4.1.1 add (E e):尾部添加单个元素
源码核心逻辑:先检查是否需要扩容,再将元素添加到elementData[size],最后size++。
public boolean add(E e) {
// 确保容量足够(size+1:因为要添加1个元素)
ensureCapacityInternal(size + 1);
// 将元素添加到数组的size位置(此时size是当前元素个数,索引从0开始)
elementData[size++] = e;
return true;
}
示例:
List<Integer> list = new ArrayList<>();
list.add(10); // 添加成功,返回true
list.add(20);
System.out.println(list); // 输出:[10, 20]
System.out.println(list.size()); // 输出:2(元素个数)
注意:add()方法永远返回true(因为 ArrayList 允许添加任意元素,不会因 “元素已存在” 而返回 false,这与 Set 的add()不同)。
4.1.2 add (int index, E element):指定索引插入元素
除了尾部添加,还可以在指定索引位置插入元素,但需要注意:插入位置会导致后续元素 “向后移动”,时间复杂度为 O (n),频繁使用会影响性能。
示例:
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
// 在索引1的位置插入"c"(原索引1的"b"向后移动到索引2)
list.add(1, "c");
System.out.println(list); // 输出:[a, c, b]
注意:如果指定的索引index超出[0, size]范围(即index < 0或index > size),会抛出IndexOutOfBoundsException(索引越界异常)。
4.1.3 addAll (Collection<? extends E> c):添加另一个集合的所有元素
示例:
List<String> list1 = new ArrayList<>();
list1.add("a");
list1.add("b");
List<String> list2 = new ArrayList<>();
list2.add("c");
list2.add("d");
// 将list2的所有元素添加到list1尾部
list1.addAll(list2);
System.out.println(list1); // 输出:[a, b, c, d]
addAll()返回boolean:如果集合因添加操作发生了变化(即 c 不为空),返回true;如果 c 为空,返回

最低0.47元/天 解锁文章
801

被折叠的 条评论
为什么被折叠?



