java ArrayList的add方法是插入到最后吗
是的,Java 中的 ArrayList
的 无参 add(E e)
方法 确实是 将元素插入(追加)到列表的末尾。
关键点:
add(E e)
方法:这是最常用的
add
方法。它将指定的元素
e
追加 到此列表的末尾。时间复杂度:平摊常数时间 (Amortized constant time - O(1))。这意味着在大多数情况下添加操作非常快,但在内部数组需要扩容时(容量不够时),那次特定的添加操作会稍慢一些(O(n)),因为需要创建新数组并复制数据。扩容后,后续的添加操作又会很快。
add(int index, E element)
方法:这是另一个重载的
add
方法。它将指定的元素
element
插入 到此列表中的指定位置index
。所有在
index
位置及之后的现有元素都会向后移动一位(索引加一)。时间复杂度:O(n),其中
n
是列表的大小(更准确地说,是size - index
)。因为可能需要移动很多元素。
示例:
import java.util.ArrayList;public class ArrayListAddExample {public static void main(String[] args) {ArrayList<String> fruits = new ArrayList<>();fruits.add("Apple"); // 添加到末尾 (索引 0)fruits.add("Banana"); // 添加到末尾 (索引 1)fruits.add("Orange"); // 添加到末尾 (索引 2)System.out.println(fruits); // 输出: [Apple, Banana, Orange]fruits.add(1, "Mango"); // 插入到索引 1 的位置// "Banana" 和 "Orange" 向后移动// 现在列表: [Apple, Mango, Banana, Orange]System.out.println(fruits); // 输出: [Apple, Mango, Banana, Orange]fruits.add("Grape"); // 再次使用无参 add,添加到末尾 (索引 4)System.out.println(fruits); // 输出: [Apple, Mango, Banana, Orange, Grape]}
}
总结:
当你调用
list.add(item)
(不带索引参数)时,item
总是被添加到ArrayList
的最后。如果你需要将元素插入到列表的特定位置(开头、中间),则需要使用
list.add(index, item)
方法,并指定目标位置的索引。注意这会导致后续元素移动,性能开销更大。