我正在使用CircularFifoQueue来创建队列。一切都很好,但我有点困惑。新值是否在列表末尾添加?这是for循环的结果
public static CircularFifoQueue<Client> usersDelay = new CircularFifoQueue<Client>(4);
System.out.println(newValue);
list.add(newValue);
for(int i=0; i<list.size(); i++){
System.out.println(i+ ": "+list.get(i));
}
New value : 345
0: 345
--------------------------
New value : 369
0: 345
1: 369
--------------------------
New value : 444
0: 345
1: 369
2: 444
--------------------------
New value : 432
0: 345
1: 369
2: 444
3: 432
--------------------------
New value : 633
0: 369
1: 444
2: 432
3: 633
--------------------------
New value : 346
0: 444
1: 432
2: 633
3: 346
--------------------------
New value : 299
0: 432
1: 633
2: 346
3: 299
--------------------------
New value : 423
0: 633
1: 346
2: 299
3: 423
--------------------------
New value : 538
0: 346
1: 299
2: 423
3: 538
--------------------------
如果我想获得最近添加的10个元素,我应该将列表从结尾循环到开头吗?
答案 0 :(得分:0)
您正在使用大小为4的循环FIFO队列。 想象一下。
因此,当您开始向队列添加元素时。这个过程就是这样的。
同时阅读文档。
value : 1
如果你想迭代10个最近排序的元素,那么首先将队列的大小增加到10以上。然后从末尾迭代列表。
如果要求获得最近添加的元素(LIFO)更自然,你也可以使用堆栈。