Java中peek函数,Java DelayQueue peek()用法及代码示例

本文详细介绍了Java中的DelayQueue及其peek方法。DelayQueue是一个阻塞队列,用于存储具有延迟过期时间的元素。peek方法用于查看队列头部元素而不移除它。示例代码展示了如何创建DelayQueue,添加元素,然后使用peek方法查看头部元素。当队列为空时,peek方法返回null。
摘要由CSDN通过智能技术生成

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 DQ

= new DelayQueue();

// 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 DQ

= new DelayQueue();

// 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和集合概念,并做好行业准备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值