當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java DelayQueue peek()用法及代碼示例


DelayQueue的peek()方法用於檢索DelayQueue的頭部,但不刪除它,就像poll()方法的情況那樣,將其從DelayQueue中移除頭部。

用法:

public E peek ()

參數:
此方法不接受任何參數。

返回:
此方法返回DelayQueue的頭部,並且不將其從此DelayQueue中刪除。

異常:
NullPointerException :如果head不存在,則此函數將返回null。



下麵的程序來說明Java中的DelayQueue peek():

範例1:

// Java Program Demonstrate DelayQueue peek() 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 delayqueue 
        System.out.println("Original DelayQueue:"
                           + DQ + "\n"); 
        // peek() method for returning head of the DelayQueue 
  
        System.out.println("Head of the DelayQueue:"
                           + DQ.peek()); 
        // print DelayQueue 
        System.out.println("\nAfter peek() method, DelayQueue:"
                           + DQ); 
    } 
}
輸出:
Original DelayQueue:[
{ A, time=1545817334485}, 
{ B, time=1545817334486}, 
{ C, time=1545817334487}, 
{ D, time=1545817334488}]

Head of the DelayQueue:
{ A, time=1545817334485}

After peek() method, DelayQueue:[
{ A, time=1545817334485}, 
{ B, time=1545817334486}, 
{ C, time=1545817334487}, 
{ D, time=1545817334488}]

範例2:

// Java Program Demonstrate DelayQueue peek() 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)); 
        // Print delayqueue 
        System.out.println("Original DelayQueue:"
                           + DQ + "\n"); 
        // removing all elements 
        DQ.clear(); 
        // peek() method for returning head of the DelayQueue 
        System.out.println("Head of the DelayQueue:" + DQ.peek()); 
    } 
}
輸出:
Original DelayQueue:[
{ A, time=1545817342666}, 
{ B, time=1545817342667}]

Head of the DelayQueue:null

注意讀者!現在不要停止學習。以student-friendly的價格掌握Java和Java集合基礎知識課程中所有重要的Java和集合概念,並做好行業準備。




相關用法


注:本文由純淨天空篩選整理自ProgrammerAnvesh大神的英文原創作品 DelayQueue peek() method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。