Java列表add()和addAll()方法
1. Java列表add()
此方法用于将元素添加到列表中。
有两种方法可以将元素添加到列表中。
add(E e):将元素追加到列表的末尾。
由于列表支持泛型,因此可以在创建列表时确定可以添加的元素类型。add(int index,E element):在给定索引处插入元素。
给定索引中的元素将移至列表的右侧。
如果给定的索引超出范围,则该方法将抛出" IndexOutOfBoundsException"。
让我们看一下List add()方法的一些示例。
package com.theitroad.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]
}
}
2. Java列表addAll()
此方法用于将集合中的元素添加到列表中。
有两个重载的addAll()方法。
addAll(Collection <?extends E> c):此方法将给定集合中的所有元素追加到列表的末尾。
插入的顺序取决于集合迭代器返回它们的顺序。addAll(int index,Collection <?extended E> c):我们可以使用此方法在给定索引处插入集合中的元素。
列表中的所有元素都向右移动,以为集合中的元素腾出空间。
让我们看一下List addAll()方法的简单示例。
package com.theitroad.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]
}
}
3.带有列表add()方法的UnsupportedOperationException
如果您查看List的add()和addAll()方法文档,则该操作是可选的。
这意味着列表实现可能不支持它。
在这种情况下,列表add()方法将引发UnsupportedOperationException。
在将元素添加到列表中时,有两种常见的情况,在此情况下您会发现此异常。
Arrays.asList():此方法返回固定大小的列表,因为它由指定的数组支持。
更改列表大小的任何操作都将引发UnsupportedOperationException。Collections.unmodifiableList(List l):此方法返回给定列表的不可修改视图。
因此,add()操作将引发UnsupportedOperationException。
我们来看一个简单的UnsupportedOperationException例子,其中包含这两种类型的列表的添加操作。
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)
jshell> List<String> strs = new ArrayList<>();
strs ==> []
jshell> strs.add("A");
==> 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)

