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)