Java 实现固定长度队列,自动删除最早添加的数据

服务器有一个发送验证码到指定邮箱的功能。测试的时候,往往会随意填写一个邮箱来测试注册功能,往往需要从日志或者数据库去获取最近发送的验证码,今天就想着来做一个接口,仅供测试机使用,可以列出最近发送的 5 条验证码和对应的邮箱。
1. 长度固定,不能太长了,就最近的几条就可以,所以需要固定的队列。
2. 在添加的时候,自动删除最早添加的记录。
3. 输出的时候,倒序输出

简单的代码如下,主要使用了  org.apache.commons.collections4.queue.CircularFifoQueue.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private static volatile CircularFifoQueue<String> tokenSentQueue = new CircularFifoQueue<>(5);

/**
* 添加一条记录
*/
public void off(String mail,String token){
tokenSentQueue.off(String.format("Send [%s] to mail: [%s]",token,mail));
}

/**
* 倒序输出。
*/
public List<String> tokenSentList(){
List<String> result = tokenSentQueue.stream().collect(Collectors.toList());
Collections.reverse(result);
return result;
}
Just for my love !!