c# - 当我添加新项目时,列表会自动删除最旧的项目

标签 c# list queue

我需要 C# 中的一个类来使用以下方法存储不超过最后 N 项:

Add(T item) {
    if (mylist.Count >= N)
        remove the first(oldest) item;
    add a new item to the tail;
}

并具有获取指定索引处的项目的属性。
因此,正确的方法可能是将我的类基于以下类之一:List、Queue、ConcurrentQueue、Dequeue(可能有所不同?)。当然,一个类应该为头部和尾部提供相等的访问时间。
问题是,哪个类最适合我的目的?

最佳答案

使用 LinkedList(t) 来完成此操作。这给了你第一个、最后一个和计数。这样,一旦计数达到某个点,就可以删除最后一个。

myList = new LinkedList();

Add(T item){
    if (myList.Count >= N)
        myList.RemoveLast();
    myList.AddFirst(item);
}

在这种情况下,最后一个项目是最旧的,第一个项目是最新的。

关于c# - 当我添加新项目时,列表会自动删除最旧的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28815140/

相关文章:

Python - 检查列表列表列表是否包含特定列表

swift - Swift 中没有信号量的并发

python - 使用多处理写入文件

c# - 使用 SQLite 时实现 MVVM 设计模式的正确方法

c# - 根据导入的十进制值应用颜色值

c# - 为什么 Columns 在调用 DataGridView.Columns.Clear() 后不保持隐藏状态?

c# - Csharp 线程在一个完成而不等待加入时启动新线程

javascript - 使用js在选择时获取所选项目

c# - 如何将类列表传递给接口(interface)列表?

python - 在不同模块中运行的线程之间共享队列