如何使用Java List的add()和addAll()方法

介绍

在本文中,您将学习有关 Java 的 List 方法 add() 和 addAll() 的知识。

Java中的List add()方法。

这种方法用于向列表中添加元素。有两种方法可以向列表中添加元素。

    1. add(E e): 在列表末尾添加元素。由于列表支持泛型,可以添加的元素类型在创建列表时确定。

 

    add(int index, E element): 在给定索引处插入元素。给定索引处的元素向右移动列表。如果给定的索引超出范围,该方法将抛出IndexOutOfBoundsException异常。

以下是一些List add()方法的示例:
这里有一些List add()方法的例子:
这是一些List add()方法的示例:
以下是一些List的add()方法示例:

package com.scdev.examples;

import java.util.ArrayList;
import java.util.List;

public class ListAddExamples {

	public static void main(String[] args) {

		List<String> vowels = new ArrayList<>();

		vowels.add("A"); // [A]
		vowels.add("E"); // [A, E]
		vowels.add("U"); // [A, E, U]

		System.out.println(vowels); // [A, E, U]

		vowels.add(2, "I"); // [A, E, I, U]
		vowels.add(3, "O"); // [A, E, I, O, U]

		System.out.println(vowels); // [A, E, I, O, U]
	}
}

首先,这段代码将把A、E和U添加到一个列表中,并输出[A, E, U]。

接下来,这个代码会将I添加到索引为2的位置,得到[A, E, I, U]。然后,它会将O添加到索引为3的位置,得到[A, E, I, O, U]。最后,这个列表将被输出到屏幕上。

Java列表的addAll()

这个方法用于将集合中的元素添加到列表中。有两个重载的addAll()方法。

    1. addAll(Collection<? extends E> c): 此方法将给定集合中的所有元素附加到列表的末尾。插入顺序取决于集合迭代器返回的顺序。

 

    addAll(int index, Collection<? extends E> c): 使用此方法可以将集合中的元素从给定索引插入。列表中的所有元素都向右移动以为集合中的元素腾出空间。

以下是一些List addAll()方法的示例:

package com.scdev.examples;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListAddAllExamples {

	public static void main(String[] args) {

		List<Integer> primeNumbers = new ArrayList<>();

		primeNumbers.addAll(Arrays.asList(2, 7, 11));

		System.out.println(primeNumbers); // [2, 7, 11]

		primeNumbers.addAll(1, Arrays.asList(3, 5));

		System.out.println(primeNumbers); // [2, 3, 5, 7, 11]
	}
}

首先,这段代码创建了一个包含值[2, 7, 11]的新列表。然后,将该列表输出到屏幕上。

接下来,创建了一个由值[3, 5]组成的第二个列表。然后,使用addAll()函数将第二个列表添加到第一个列表的索引1处。结果将是一个由[2, 3, 5, 7, 11]组成的列表,并输出到屏幕上。

使用List的add()方法引发的UnsupportedOperationException

List的add()和addAll()方法的文档说明中指出该操作是可选的,这意味着列表的实现可能不支持它。在这种情况下,列表的add()方法会抛出UnsupportedOperationException异常。当向列表中添加元素时,有两种常见的情况会导致出现这个异常:

    1. Arrays.asList():此方法返回一个固定大小的列表,因为它是由指定的数组支持的。任何更改列表大小的操作都会抛出UnsupportedOperationException异常。

 

    Collections.unmodifiableList(List l):此方法返回给定列表的不可修改视图。因此,执行add()操作会抛出UnsupportedOperationException异常。

这是一个在固定大小的列表上使用add操作时引发不支持的操作异常的例子。

jshell> List<Integer> ints = Arrays.asList(1,2,3);
ints ==> [1, 2, 3]

jshell> ints.add(4);
|  Exception java.lang.UnsupportedOperationException
|        at AbstractList.add (AbstractList.java:153)
|        at AbstractList.add (AbstractList.java:111)
|        at (#4:1)

首先,这段代码创建了一个固定大小的列表[1, 2, 3]。然后,这段代码尝试向列表添加4。结果抛出了一个UnsupportedOperationException异常。

这里是一个对给定列表的不可修改视图执行add操作时的UnsupportedOperationException的例子。

jshell> List<String> strs = new ArrayList<>();
strs ==> []

jshell> strs.add("A");
$6 ==> true

jshell> List<String> strs1 = Collections.unmodifiableList(strs);
strs1 ==> [A]

jshell> strs1.add("B");
|  Exception java.lang.UnsupportedOperationException
|        at Collections$UnmodifiableCollection.add (Collections.java:1058)
|        at (#8:1)

首先,此代码将 A 添加到一个列表中。接下来,此代码尝试将 B 添加到之前列表的不可修改视图中。这将导致抛出 UnsupportedOperationException 异常。

结论

在这篇文章中,你学到了 Java 的 List 方法 add() 和 addAll()。

推荐阅读:

  • Java List
  • Java ArrayList

参考资料:

  • List API Docs
  • StackOverflow Question
发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds