Skip to content

Instantly share code, notes, and snippets.

@ijingo
Created February 14, 2022 15:46
Show Gist options
  • Save ijingo/abb9a154d3e46cc4d320a3ecefcaeb10 to your computer and use it in GitHub Desktop.
Save ijingo/abb9a154d3e46cc4d320a3ecefcaeb10 to your computer and use it in GitHub Desktop.
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