Java中ConcurrentLinkedDeque addAll() 方法及示例
addAll(Collection col) 是一个传入参数为col的方法,其中col是元素的集合(List, ArrayList, LinkedList等等)。整个集合都会被添加到Dequeue的尾部。如果集合附加到Deque中,该方法会返回true,就像add()方法一样。
语法:
public boolean addAll(Collection c)
参数: 此函数接受一个参数col,即要添加的元素集合。
返回值: 该方法返回一个布尔值,表示集合是否附加到Deque中。
异常: 此方法接受两种异常:
- NullPointerException: 如果集合中的任何元素为空或集合为空,则抛出异常。
- IllegalArgumentException: 如果传递的集合是现有deque本身,则抛出异常。
下面的示例说明了addAll()方法:
示例1:向ConcurrentLinkedDeque的第一个集合添加数字集合
// Java program to illustrate addAll() method
import java.util.concurrent.ConcurrentLinkedDeque;
public class Example1 {
public static void main(String[] args)
{
// create object of ConcurrentLinkedDeque
ConcurrentLinkedDeque<Integer> ld1
= new ConcurrentLinkedDeque<Integer>();
// Add elements
ld1.add(1);
ld1.add(2);
ld1.add(3);
ld1.add(4);
// print ld1
System.out.println("LD1: " + ld1);
// create object of ConcurrentLinkedDeque
ConcurrentLinkedDeque<Integer> ld2
= new ConcurrentLinkedDeque<Integer>();
ld2.add(8);
ld2.add(1);
ld2.add(3);
ld2.add(5);
// print ld2
System.out.println("LD2: " + ld2);
// Adding elements of ld2 to ld1 at its end.
ld1.addAll(ld2);
System.out.println("After adding the ld2 to ld1: "
+ ld1);
}
}
LD1: [1, 2, 3, 4]
LD2: [8, 1, 3, 5]
将ld2添加到ld1中后: [1, 2, 3, 4, 8, 1, 3, 5]
示例2:展示IllegalArgumentException
// Java program to illustrate addAll() method
import java.util.concurrent.ConcurrentLinkedDeque;
public class Example2 {
public static void main(String[] args)
{
// create object of ConcurrentLinkedDeque
ConcurrentLinkedDeque<String> ld1
= new ConcurrentLinkedDeque<String>();
// Add elements
ld1.add("John");
ld1.add("Johnathan");
ld1.add("Jones");
ld1.add("James");
// print ld1
System.out.println("LD1: " + ld1);
try {
ld1.addAll(ld1);
}
catch (IllegalArgumentException e) {
System.out.println("Exception thrown while "
+ "adding deque to "
+ "itself is: "
+ e);
}
}
}
LD1: [John, Johnathan, Jones, James]
尝试将队列本身添加到它本身时抛出异常: java.lang.IllegalArgumentException
示例3:展示NullPointerException
// Java程序演示addAll()方法
import java.util.concurrent.ConcurrentLinkedDeque;
public class Example3 {
public static void main(String[] args)
{
// 创建ConcurrentLinkedDeque对象
ConcurrentLinkedDeque<String> ld1
= new ConcurrentLinkedDeque<String>();
// 添加元素
ld1.add("John");
ld1.add("Johnathan");
ld1.add("Jones");
ld1.add("James");
// 打印ld1
System.out.println("LD1: " + ld1);
// 创建ConcurrentLinkedDeque对象
ConcurrentLinkedDeque<String> ld2 = null;
// 打印ld2
System.out.println("LD2: " + ld2);
try {
System.out.println("添加ld2到ld1之后: ");
ld2.addAll(ld1);
}
catch (NullPointerException e) {
System.out.println(e);
}
}
}
LD1: [John, Johnathan, Jones, James]
LD2: null
添加ld2到ld1之后:
java.lang.NullPointerException
引用: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentLinkedDeque.html
极客教程