如何使用Java List的add()和addAll()方法
介绍
在本文中,您将学习有关 Java 的 List 方法 add() 和 addAll() 的知识。
Java中的List add()方法。
这种方法用于向列表中添加元素。有两种方法可以向列表中添加元素。
-
- 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()方法。
-
- 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异常。当向列表中添加元素时,有两种常见的情况会导致出现这个异常:
-
- 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