2

假设我有很多需要处理的字符串,我喜欢将最后处理的字符串放在内存中以避免重复处理。我只需要记录最后 100 个字符串,这意味着如果我使用

List<string> oldString之后oldString.Add(),我必须使用oldString.TakeFromEnd(100)As you know, TakeFromEnd()not exist,这意味着如果我走这条路,我必须写很多东西来保持 100 的长度List,这会导致我可以想象的糟糕的性能。

我想问一下,系统类中是否有任何预先制作的只保存固定数量的数据,并在添加新数据时丢弃最旧的数据。谢谢

[编辑]

Queue<string>确实很好,用于.Any()检查是否已经存在,用于.Enqueue()添加(不是下面回答的Equeue,它拍摄了N),用于.Count检查长度,并.Dequeue()删除第一个添加的。

4

1 回答 1

7

与一个队列

这个想法是:

public void addToQueue(Object obj){
    if (myQueue.Count > 100)
        myQueue.Dequeue();

    myQueue.Equeue(obj);
}

这大致是您需要使用的代码草图,但您会明白的。

然后,您将拥有一个仅包含最新 100 条记录的队列

于 2012-08-01T11:34:07.140 回答