Java PriorityBlockingQueue toArray()方法
toArray()
PriorityBlockingQueen的 toArray 方法用于创建一个数组,该数组的元素与该PriorityBlockingQueen的元素相同,且顺序适当。实际上,这个方法是把PriorityBlockingQueen中的所有元素复制到一个新的数组中。这个方法在数组和PriorityBlockingQueue之间起到了桥梁作用。
语法
public Object[] toArray()
返回值: 该方法返回一个包含PriorityBlockingQueue元素的数组。
下面的程序说明了PriorityBlockingQueue类的toArray()方法。
例1: 演示PriorityBlockingQueue的toArray()方法的程序,从一个包含数字的PriorityBlockingQueue创建一个数字数组。
// Java Program Demonstrate toArray()
// method of PriorityBlockingQueue
import java.util.concurrent.PriorityBlockingQueue;
public class GFG {
public static void main(String[] args)
{
// define capacity of PriorityBlockingQueue
int capacityOfQueue = 5;
// create object of PriorityBlockingQueue
PriorityBlockingQueue<Integer> PrioQueue
= new PriorityBlockingQueue<Integer>(capacityOfQueue);
// Add numbers to PriorityBlockingQueue
PrioQueue.offer(35658786);
PrioQueue.offer(5278367);
PrioQueue.offer(74381793);
PrioQueue.offer(87625142);
// create an array of elements of PriorityBlockingQueue
Object[] array = PrioQueue.toArray();
// print elements of array
System.out.println("Array Contains:");
for (Object i : array) {
System.out.print(i + " ");
}
}
}
输出
Array Contains:
5278367 35658786 74381793 87625142
例2: 演示PriorityBlockingQueue的toArray()方法的程序,从一个包含字符串值的PriorityBlockingQueue中创建一个字符串数组。
// Java Program Demonstrate toArray()
// method of PriorityBlockingQueue
import java.util.concurrent.PriorityBlockingQueue;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// define capacity of PriorityBlockingQueue
int capacityOfQueue = 5;
// create object of PriorityBlockingQueue which contains
// name of students
PriorityBlockingQueue<String> names
= new PriorityBlockingQueue<String>(capacityOfQueue);
// Add names of students of girls college
names.offer("Joyita");
names.offer("Bristi");
names.offer("Riya");
// Create a array by calling toArray() method
Object[] array = names.toArray();
// Print List of names
System.out.println("Queue is " + names);
// Print elements of array
System.out.println("The array created by toArray() is:");
for (Object i : array) {
System.out.println(i + " ");
}
}
}
输出
Queue is [Bristi, Joyita, Riya]
The array created by toArray() is:
Bristi
Joyita
Riya
toArray(T[] a)
PriorityBlockingQueen 的toArray(T[] a)方法用于返回一个包含与该PriorityBlockingQueen相同元素的数组,并以适当的顺序排列。这个方法与toArray()的不同之处只有一个条件。如果PriorityBlockingQueue的大小小于或等于传递的数组,返回的数组类型与参数中传递的数组相同。否则,将分配一个新的数组,其类型与指定的数组相同,并且数组的大小等于该队列的大小。这个方法作为数组和集合之间的桥梁。
语法
public <T> T[] toArray(T[] a)
参数: 该方法接受一个 数组 作为参数,如果它足够大的话,队列中的所有元素将被复制到该数组中。否则,一个新的相同运行时类型的数组将被分配到此。
返回值: 该方法返回一个包含该队列中所有元素的数组。
异常 该方法抛出以下异常。
- ArrayStoreException: 当传递的数组与PriorityBlockingQueue的元素类型不同。
- NullPointerException: 如果传递的数组是空的。
下面的程序说明了PriorityBlockingQueue类的toArray(T[] a)方法。
例1: 演示PriorityBlockingQueue的toArray(T[] a)方法的程序。
// Java Program Demonstrate toArray(T[] a)
// method of PriorityBlockingQueue
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.TimeUnit;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
// define capacity of PriorityBlockingQueue
int capacityOfQueue = 3;
// create object of PriorityBlockingQueue
PriorityBlockingQueue<String> PrioQueue
= new PriorityBlockingQueue<String>(capacityOfQueue);
// Add names of students of girls college
PrioQueue.offer("Joyi");
PrioQueue.offer("Rani");
PrioQueue.offer("Riya");
// Creating the array
String[] array = new String[capacityOfQueue];
// Calling toArray(T[] a) method
Object[] ReturnArray = PrioQueue.toArray(array);
// Print queue
System.out.println("Queue is " + PrioQueue);
// Print elements of array passed as parameter
System.out.println();
System.out.println("The array passed to toArray() is:");
for (Object i : array) {
System.out.println(i);
}
// Print elements of array returned by method toArray()
System.out.println();
System.out.println("The array returned by toArray() is:");
for (Object i : ReturnArray) {
System.out.println(i);
}
}
}
输出
Queue is [Joyi, Rani, Riya]
The array passed to toArray() is:
Joyi
Rani
Riya
The array returned by toArray() is:
Joyi
Rani
Riya
例2: 演示PriorityBlockingQueue的toArray(T[] a)方法所产生的异常的程序。
// Java Program Demonstrate toArray(T[] a)
// method of PriorityBlockingQueue
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.TimeUnit;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
// define capacity of PriorityBlockingQueue
int capacityOfQueue = 3;
// create object of PriorityBlockingQueue
PriorityBlockingQueue<String> PrioQueue
= new PriorityBlockingQueue<String>(capacityOfQueue);
// Add names of students of girls college
PrioQueue.offer("Joyi");
PrioQueue.offer("Rani");
PrioQueue.offer("Riya");
// Creating the array with null value
String[] array = null;
try {
// Calling toArray(T[] a) method
Object[] ReturnArray = PrioQueue.toArray(array);
}
catch (Exception e) {
System.out.println("Exception thrown:" + e);
}
}
}
输出
Exception thrown:java.lang.NullPointerException
参考资料
- https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html#toArray-
- https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html#toArray-T:A-