Java中PriorityBlockingQueue toArray()方法
toArray()
PriorityBlockingQueue的 toArray 方法是用于创建一个与此PriorityBlockingQueue具有相同元素、正确顺序的数组。实际上,此方法会将PriorityBlockingQueue中的所有元素复制到一个新数组中。此方法作为数组与PriorityBlockingQueue之间的桥梁。
语法:
public Object[] toArray()
返回值: 该方法返回一个包含PriorityBlockingQueue的元素的数组。
下面的程序是PriorityBlockingQueue类的 toArray() 方法的实例:
示例1: 用PriorityBlockingQueue类的toArray()方法的程序,创建一个数组,该数组包含PriorityBlockingQueue中的数字。
// Java程序展示PriorityBlockingQueue的toArray()方法
import java.util.concurrent.PriorityBlockingQueue;
public class GFG {
public static void main(String[] args)
{
// 定义PriorityBlockingQueue的容量
int capacityOfQueue = 5;
// 创建PriorityBlockingQueue对象
PriorityBlockingQueue<Integer> PrioQueue
= new PriorityBlockingQueue<Integer>(capacityOfQueue);
// 向PriorityBlockingQueue添加数字
PrioQueue.offer(35658786);
PrioQueue.offer(5278367);
PrioQueue.offer(74381793);
PrioQueue.offer(87625142);
// 创建一个PriorityBlockingQueue的元素数组
Object[] array = PrioQueue.toArray();
// 输出数组中的元素
System.out.println("Array Contains:");
for (Object i : array) {
System.out.print(i + " ");
}
}
}
输出结果:
Array Contains:
5278367 35658786 74381793 87625142
示例2: 用PriorityBlockingQueue类的toArray()方法的程序,创建一个数组,该数组包含PriorityBlockingQueue中的字符串。
// Java程序展示PriorityBlockingQueue的toArray()方法
import java.util.concurrent.PriorityBlockingQueue;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// 定义PriorityBlockingQueue的容量
int capacityOfQueue = 5;
// 创建PriorityBlockingQueue对象, 包含学生姓名
PriorityBlockingQueue<String> names
= new PriorityBlockingQueue<String>(capacityOfQueue);
// 添加女子学院学生姓名
names.offer("Joyita");
names.offer("Bristi");
names.offer("Riya");
// 通过调用toArray()方法创建一个数组
Object[] array = names.toArray();
// 输出名字列表
System.out.println("队列是 " + names);
// 输出数组中的元素
System.out.println("创建的数组是:");
for (Object i : array) {
System.out.println(i + " ");
}
}
}
输出结果:
队列是 [Bristi, Joyita, Riya]
创建的数组是:
Bristi
Joyita
Riya
toArray(T[] a)
toArray(T[] a)方法用于返回一个数组,它包含与此PriorityBlockingQueue相同的元素,按适当的顺序。这个方法只有一个条件与toArray()不同。如果PriorityBlockingQueue的大小小于或等于传递的数组,则返回的数组的类型与参数中传递的数组相同。否则,将使用与指定数组相同的类型分配一个新数组,并将数组的大小设置为此队列的大小。此方法行为类似于数组和集合之间的桥梁。
语法:
public <T> T[] toArray(T[] a)
参数: 此方法接受一个数组作为参数,如果它足够大,则将队列中的所有元素复制到其中。否则,将为此分配一个相同运行时类型的新数组。
返回值: 此方法返回一个数组,其中包含此队列中的所有元素。
异常: 此方法引发以下异常:
- ArrayStoreException: 如果传递的数组与PriorityBlockingQueue元素的类型不同。
- NullPointerException: 如果传递的数组为空。
下面的程序说明了PriorityBlockingQueue类的toArray(T[] a)方法:
示例1: 演示PriorityBlockingQueue上toArray(T[] a)方法的程序。
//Java程序演示PriorityBlockingQueue的toArray(T[]a)
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.TimeUnit;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
//定义PriorityBlockingQueue的容量
int capacityOfQueue = 3;
//创建PriorityBlockingQueue的对象
PriorityBlockingQueue<String> PrioQueue
= new PriorityBlockingQueue<String>(capacityOfQueue);
//将女子学院的学生姓名添加到优先队列中
PrioQueue.offer("Joyi");
PrioQueue.offer("Rani");
PrioQueue.offer("Riya");
//创建数组
String[] array = new String[capacityOfQueue];
//调用toArray(T[] a)方法
Object[] ReturnArray = PrioQueue.toArray(array);
//打印队列
System.out.println("队列是 " + PrioQueue);
//打印作为参数传递的数组的元素
System.out.println();
System.out.println("传递给toArray()的数组是:");
for (Object i : array) {
System.out.println(i);
}
//打印由toArray()方法返回的数组的元素
System.out.println();
System.out.println("由toArray()返回的数组是:");
for (Object i : ReturnArray) {
System.out.println(i);
}
}
}
输出:
队列是[Joyi,Rani,Riya]
传递给toArray()的数组是:
Joyi
Rani
Riya
由toArray()返回的数组是:
Joyi
Rani
Riya
示例2: 演示PriorityBlockingQueue的toArray(T[] a)方法引发的异常的程序。
//java程序演示PriorityBlockingQueue的toArray(T[] a)方法
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.TimeUnit;
public class GFG {
public static void main(String[] args)
throws InterruptedException
{
//定义PriorityBlockingQueue的容量
int capacityOfQueue = 3;
//创建PriorityBlockingQueue对象
PriorityBlockingQueue<String> PrioQueue
= new PriorityBlockingQueue<String>(capacityOfQueue);
//添加女子学院学生的姓名
PrioQueue.offer("Joyi");
PrioQueue.offer("Rani");
PrioQueue.offer("Riya");
//创建值为空的数组
String[] array = null;
try {
//调用toArray(T[] a)方法
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-
极客教程