Java中PriorityBlockingQueue toArray()方法

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-

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程