Java AbstractQueue的addAll()方法及示例
AbstractQueue 的 addAll(E e) 方法将指定集合中的所有元素添加到该队列中。
语法
public boolean addAll(Collection c)
参数: 该方法接受一个强制参数 集合 ,其中包含要添加到该队列的元素。
返回: 如果这个队列由于调用而发生了变化,该方法返回 真
异常: 这个方法抛出以下异常。
- IllegalStateException :如果由于插入限制,此时不能添加所有的元素。
- NullPointerException :如果指定的集合包含一个空元素,而这个队列不允许空元素,或者指定的集合是空的
- ClassCastException – 如果指定集合中的元素的类别阻止它被添加到这个队列中
- IllegalArgumentException – 如果指定集合的某个元素的某些属性阻止它被添加到这个队列中,或者如果指定的集合是这个队列。
下面的程序说明了addAll()方法。
程序1 :
// Java program to illustrate the
// AbstractQueue addAll() method
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
public class GFG1 {
public static void main(String[] argv)
throws Exception
{
// Creating object of AbstractQueue<Integer>
AbstractQueue<Integer>
AQ1 = new LinkedBlockingQueue<Integer>();
// Populating AQ1
AQ1.add(10);
AQ1.add(20);
AQ1.add(30);
AQ1.add(40);
AQ1.add(50);
// print AQ
System.out.println("AbstractQueue1 contains : " + AQ1);
AbstractQueue<Integer>
AQ2 = new LinkedBlockingQueue<Integer>();
// print AQ2 initially
System.out.println("AbstractQueue2 initially contains : " + AQ2);
// adds elements of AQ1 in AQ2
AQ2.addAll(AQ1);
System.out.println("AbstractQueue1 after addition contains : " + AQ2);
}
}
输出。
AbstractQueue1 contains : [10, 20, 30, 40, 50]
AbstractQueue2 initially contains : []
AbstractQueue1 after addition contains : [10, 20, 30, 40, 50]
程序2: IllegalStateException的程序
// Java program to illustrate the
// AbstractQueue addAll() method
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
public class GFG1 {
public static void main(String[] argv)
throws Exception
{
try {
// Creating object of AbstractQueue<Integer>
AbstractQueue<Integer>
AQ1 = new LinkedBlockingQueue<Integer>();
// Populating AQ1
AQ1.add(10);
AQ1.add(20);
AQ1.add(30);
AQ1.add(40);
AQ1.add(50);
// print AQ
System.out.println("AbstractQueue1 contains : " + AQ1);
AbstractQueue<Integer>
AQ2 = new LinkedBlockingQueue<Integer>(3);
// print AQ2 initially
System.out.println("AbstractQueue2 initially contains : " + AQ2);
// adds elements of AQ1 in AQ2
AQ2.addAll(AQ1);
System.out.println("AbstractQueue1 after addition contains : " + AQ2);
}
catch (Exception e) {
System.out.println("Exception: " + e);
}
}
}
输出。
AbstractQueue1 contains : [10, 20, 30, 40, 50]
AbstractQueue2 initially contains : []
Exception: java.lang.IllegalStateException: Queue full
程序3: NullPointerException的程序
// Java program to illustrate the
// AbstractQueue addAll() method
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
public class GFG1 {
public static void main(String[] argv)
throws Exception
{
try {
// Creating object of AbstractQueue<Integer>
AbstractQueue<Integer>
AQ1 = null;
// print AQ
System.out.println("AbstractQueue1 contains : " + AQ1);
AbstractQueue<Integer>
AQ2 = new LinkedBlockingQueue<Integer>(3);
// print AQ2 initially
System.out.println("AbstractQueue2 initially contains : " + AQ2);
// adds elements of AQ1 in AQ2
AQ2.addAll(AQ1);
System.out.println("AbstractQueue1 after addition contains : " + AQ2);
}
catch (Exception e) {
System.out.println("Exception: " + e);
}
}
}
输出。
AbstractQueue1 contains : null
AbstractQueue2 initially contains : []
Exception: java.lang.NullPointerException
参考资料: https://docs.oracle.com/javase/8/docs/api/java/util/AbstractQueue.html#addAll-E-
极客教程