Java列表add()和addAll()方法

时间:2020-02-23 14:36:32  来源:igfitidea点击:

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)