LinkedList 的 `add` 和 `addAll` 方法详解

365 阅读3分钟

在 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) 方法提供了在链表指定位置插入元素和集合的功能,进一步增强了链表的灵活性。