当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java DelayQueue toArray()用法及代码示例


DelayQueue的toArray()方法用于返回包含DelayQueue中所有元素的数组。数组中没有任何特定顺序的元素。

用法:

public Object[] toArray ()
           or
public T[] toArray (T[] a)

参数:该方法或者不接受任何参数,或者将数组T [] a作为参数,如果足够大,该数组就是要存储列表元素的数组。否则,将为此分配一个具有相同运行时类型的新数组。


返回值:该函数返回一个包含此列表中所有元素的数组。

异常:此方法的第一次重载不会引发任何异常。但是,第二次重载引发以下异常:

  • ArrayStoreException:如果指定数组的运行时类型不是此队列中每个元素的运行时类型的超类型。
  • NullPointerException :如果指定的数组为null。

以下示例程序旨在说明DelayQueue.toArray()方法:

程序1:

// Java Program Demonstrate DelayQueue toArray() method 
  
import java.util.concurrent.*; 
import java.util.*; 
  
// The DelayObject for DelayQueue 
// It must implement Delayed and 
// its getDelay() and compareTo() method 
class DelayObject implements Delayed { 
  
    private String name; 
    private long time; 
  
    // Contructor of DelayObject 
    public DelayObject(String name, long delayTime) 
    { 
        this.name = name; 
        this.time = System.currentTimeMillis() 
                    + delayTime; 
    } 
  
    // Implementing getDelay() method of Delayed 
    @Override
    public long getDelay(TimeUnit unit) 
    { 
        long diff = time - System.currentTimeMillis(); 
        return unit.convert(diff, TimeUnit.MILLISECONDS); 
    } 
  
    // Implementing compareTo() method of Delayed 
    @Override
    public int compareTo(Delayed obj) 
    { 
        if (this.time < ((DelayObject)obj).time) { 
            return -1; 
        } 
        if (this.time > ((DelayObject)obj).time) { 
            return 1; 
        } 
        return 0; 
    } 
  
    // Implementing toString() method of Delayed 
    @Override
    public String toString() 
    { 
        return "\n{"
            + " " + name + ", time=" + time + "}"; 
    } 
} 
  
// Driver Class 
public class GFG { 
    public static void main(String[] args) throws InterruptedException 
    { 
  
        // create object of DelayQueue 
        // using DelayQueue() constructor 
        BlockingQueue<DelayObject> DQ 
            = new DelayQueue<DelayObject>(); 
  
        // Add numbers to end of DelayQueue 
        // using add() method 
        DQ.add(new DelayObject("A", 1)); 
        DQ.add(new DelayObject("B", 2)); 
        DQ.add(new DelayObject("C", 3)); 
        DQ.add(new DelayObject("D", 4)); 
  
        // print queue 
        System.out.println("DelayQueue: "
                           + DQ); 
  
        // Get the array of the elements 
        // of the ArrayList 
        // using toArray() method 
        Object[] arr = DQ.toArray(); 
  
        // print the array elements 
        System.out.println("Elements of DelayQueue"
                           + " as Array: "
                           + Arrays.toString(arr)); 
    } 
}
输出:
DelayQueue: [
{ A, time=1546842694862}, 
{ B, time=1546842694863}, 
{ C, time=1546842694864}, 
{ D, time=1546842694865}]
Elements of DelayQueue as Array: [
{ A, time=1546842694862}, 
{ B, time=1546842694863}, 
{ C, time=1546842694864}, 
{ D, time=1546842694865}]

程序2:

// Java Program Demonstrate DelayQueue toArray() method 
  
import java.util.concurrent.*; 
import java.util.*; 
  
// The DelayObject for DelayQueue 
// It must implement Delayed and 
// its getDelay() and compareTo() method 
class DelayObject implements Delayed { 
  
    private String name; 
    private long time; 
  
    // Contructor of DelayObject 
    public DelayObject(String name, long delayTime) 
    { 
        this.name = name; 
        this.time = System.currentTimeMillis() 
                    + delayTime; 
    } 
  
    // Implementing getDelay() method of Delayed 
    @Override
    public long getDelay(TimeUnit unit) 
    { 
        long diff = time - System.currentTimeMillis(); 
        return unit.convert(diff, TimeUnit.MILLISECONDS); 
    } 
  
    // Implementing compareTo() method of Delayed 
    @Override
    public int compareTo(Delayed obj) 
    { 
        if (this.time < ((DelayObject)obj).time) { 
            return -1; 
        } 
        if (this.time > ((DelayObject)obj).time) { 
            return 1; 
        } 
        return 0; 
    } 
  
    // Implementing toString() method of Delayed 
    @Override
    public String toString() 
    { 
        return "\n{"
            + " " + name + ", time=" + time + "}"; 
    } 
} 
  
// Driver Class 
public class GFG { 
    public static void main(String[] args) throws InterruptedException 
    { 
  
        // create object of DelayQueue 
        // using DelayQueue() constructor 
        BlockingQueue<DelayObject> DQ 
            = new DelayQueue<DelayObject>(); 
  
        // Add numbers to end of DelayQueue 
        // using add() method 
        DQ.add(new DelayObject("A", 1)); 
        DQ.add(new DelayObject("B", 2)); 
        DQ.add(new DelayObject("C", 3)); 
        DQ.add(new DelayObject("D", 4)); 
  
        // print queue 
        System.out.println("DelayQueue: "
                           + DQ); 
  
        // Get the array of the elements 
        // of the DelayQueue 
        // using toArray(T[]) method 
        Delayed arr[] = new Delayed[DQ.size()]; 
        arr = DQ.toArray(arr); 
  
        // print the array elements 
        System.out.println("Elements of ArrayList"
                           + " as Array: "
                           + Arrays.toString(arr)); 
    } 
}
输出:
DelayQueue: [
{ A, time=1546842699503}, 
{ B, time=1546842699504}, 
{ C, time=1546842699505}, 
{ D, time=1546842699506}]
Elements of ArrayList as Array: [
{ A, time=1546842699503}, 
{ B, time=1546842699504}, 
{ C, time=1546842699505}, 
{ D, time=1546842699506}]


相关用法


注:本文由纯净天空筛选整理自ProgrammerAnvesh大神的英文原创作品 DelayQueue toArray() method in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。