Created
February 14, 2022 15:46
-
-
Save ijingo/abb9a154d3e46cc4d320a3ecefcaeb10 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.company; | |
import java.util.Date; | |
import java.util.List; | |
import java.util.Optional; | |
public class Main { | |
public static void main(String[] args) { | |
Queue queue = new Queue(3); | |
queue.enqueueClient(1); | |
queue.enqueueClient(2); | |
queue.enqueueClient(3); | |
Optional<QueueClient> queueClient = queue.queryInfo(2); | |
QueueClient client = queueClient.get(); | |
System.out.println("Position of clientId = " + client.id + ", position = " + client.position); | |
queue.dequeueClients(2); | |
queueClient = queue.queryInfo(3); | |
client = queueClient.get(); | |
System.out.println("Position of clientId = " + client.id + ", position = " + client.position); | |
} | |
static class QueueClient { | |
private long id; | |
private long position; | |
private Date enqueueTimestamp; | |
private long waitingSeconds; | |
public QueueClient(long id, long position, Date enqueueTimestamp, long waitingSeconds) { | |
this.id = id; | |
this.position = position; | |
this.enqueueTimestamp = enqueueTimestamp; | |
this.waitingSeconds = waitingSeconds; | |
} | |
public long getPosition() { | |
return position; | |
} | |
public void setPosition(long position) { | |
this.position = position; | |
} | |
public Date getEnqueueTimestamp() { | |
return enqueueTimestamp; | |
} | |
public void setEnqueueTimestamp(Date enqueueTimestamp) { | |
this.enqueueTimestamp = enqueueTimestamp; | |
} | |
public long getId() { | |
return id; | |
} | |
public void setId(long id) { | |
this.id = id; | |
} | |
public long getWaitingSeconds() { | |
return waitingSeconds; | |
} | |
public void setWaitingSeconds(long waitingSeconds) { | |
this.waitingSeconds = waitingSeconds; | |
} | |
} | |
static class Queue { | |
private long capacity; | |
public Queue(long capacity) { | |
// write your code here | |
} | |
/*** | |
* 输入 clientId,返回 client 排队结果。 | |
* 如果 queue 中没有空余位置,返回 Optional.empty()。 | |
*/ | |
public Optional<QueueClient> enqueueClient(long clientId) { | |
// write your code here | |
return Optional.empty(); | |
} | |
/*** | |
* 输入 clientId,查询 client 排队情况,QueueClient.waitingSecond 表示在队列中已经等待的时长。 | |
* 如果该 clientId 没有在队列中,返回 Optional.empty()。 | |
*/ | |
public Optional<QueueClient> queryInfo(long clientId) { | |
// write your code here | |
return Optional.empty(); | |
} | |
/*** | |
* 将排在队首的 number 个 client 出队,QueueClient.waitingSecond 表示在队列中已经等待的时长。 | |
*/ | |
public List<QueueClient> dequeueClients(long number) { | |
// write your code here | |
return List.of(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment