让我们假设我有很多需要处理的字符串,我喜欢将最后处理过的字符串放在内存中以避免重复处理它。我只需要记录最后100个字符串,这意味着如果我使用
在List<string> oldString
之后 oldString.Add()
,我必须使用oldString.TakeFromEnd(100)
如您所知,TakeFromEnd()
不存在,这意味着如果我走这条路,我必须写很多保持100长List
的东西会导致我能想象的糟糕表现。
我想问一下,系统类中是否有任何预先制作的数据只包含固定数量的数据,并在添加新数据时抛弃最旧的数据。感谢
[编辑]
Queue<string>
确实非常好,使用.Any()
检查是否已存在,使用.Enqueue()
添加(不是Equeue,如下面的答案所示,它会拍摄N),使用.Count
检查长度,.Dequeue()
删除第一个添加的长度。
答案 0 :(得分:7)
使用Queue
这个想法是:
public void addToQueue(Object obj){
if (myQueue.Count > 100)
myQueue.Dequeue();
myQueue.Equeue(obj);
}
这大致是您需要使用的代码草图,但您会明白这一点。
然后您将拥有一个仅包含最新100条记录的队列