【发布时间】:2016-11-06 13:00:49
【问题描述】:
我正在使用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 个元素,是否应该将列表从末尾循环到开头?
【问题讨论】:
-
list的类型是什么? -
链接已更新。列表包含类 Client 的自定义对象。
-
以
for(int i=Math.max(0,list.size()-10-1),i<list.size();i++)运行循环以打印列表的最后一个10元素。 -
尝试发布完整代码。似乎您已经声明了大小为
4的队列,并且根据add函数的文档,如果您的队列已满,那么它将删除最近最少添加的元素以添加新元素。这里也发生了同样的事情,所以请检查或发布。 -
如果我想获取最近添加的最后 10 个元素,我应该将列表从末尾循环到开头吗? 假设文档没有解释,为什么不你不试试两者都做,然后自己看看吗?