在 Java 的 LinkedList 类中,add 和 addAll 方法是用于向链表中添加元素的关键方法。这些方法提供了不同的方式来扩展链表,既可以单个地添加元素,也可以一次性添加多个元素。下面将详细解释这两个方法的功能、用法及示例。
1. add(E e) 方法
功能
add(E e) 方法用于在链表的末尾添加指定的元素。如果链表为空,则新元素将成为链表的唯一元素。
用法
java复制代码
boolean add(E e)
- 参数:
e,表示要添加到链表末尾的元素。 - 返回类型:
boolean,对于LinkedList来说,这个返回值总是true(因为LinkedList不受容量限制,总是可以添加元素),但这个返回值是继承自Collection接口的,对于某些受容量限制的集合来说,如果添加操作导致容量超限,则可能返回false。
示例
java复制代码
LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.println(list); // 输出:[A, B, C]
2. add(int index, E element) 方法
虽然这不是直接名为 add 但与添加元素紧密相关的方法,它允许在链表的指定位置插入元素。这里也简要提及以完善讨论。
java复制代码
void add(int index, E element)
- 参数:
index表示要插入元素的位置索引,element表示要插入的元素。 - 返回值:无。
- 异常:如果索引超出范围(即小于 0 或大于等于链表的大小),则抛出
IndexOutOfBoundsException。
示例
java复制代码
LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add(1, "C"); // 在索引1的位置插入"C",原索引1及之后的元素后移
System.out.println(list); // 输出:[A, C, B]
3. addAll(Collection<? extends E> c) 方法
功能
addAll(Collection<? extends E> c) 方法用于将指定集合中的所有元素添加到链表的末尾,如果指定的集合为 null,则抛出 NullPointerException。
用法
java复制代码
boolean addAll(Collection<? extends E> c)
- 参数:
c,表示要添加到链表末尾的元素的集合。 - 返回类型:
boolean,如果链表由于调用而发生更改,则返回true(对于LinkedList来说,如果c不为空,则总是返回true)。
示例
java复制代码
LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
List<String> anotherList = Arrays.asList("C", "D", "E");
boolean added = list.addAll(anotherList);
System.out.println(added); // 输出:true
System.out.println(list); // 输出:[A, B, C, D, E]
4. addAll(int index, Collection<? extends E> c) 方法
虽然这不是直接讨论的 addAll 方法的重载形式,但它允许在链表的指定位置插入一个集合的所有元素,这里也简要提及。
java复制代码
boolean addAll(int index, Collection<? extends E> c)
- 参数:
index表示要插入集合的起始位置索引,c表示要插入的元素的集合。 - 返回值和异常与上面提到的
addAll方法相同。
示例
java复制代码
LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
List<String> anotherList = Arrays.asList("C", "D");
boolean added = list.addAll(1, anotherList); // 在索引1的位置插入集合中的元素
System.out.println(added); // 输出:true
System.out.println(list); // 输出:[A, C, D, B]
总结
LinkedList 的 add 和 addAll 方法为向链表中添加元素提供了灵活的方式。add(E e) 方法用于在链表末尾添加单个元素,而 addAll(Collection<? extends E> c) 方法则允许一次性添加多个元素到链表末尾。此外,add(int index, E element) 和 addAll(int index, Collection<? extends E> c) 方法提供了在链表指定位置插入元素和集合的功能,进一步增强了链表的灵活性。