您将如何在 C# 或 Java 中实现容量受限的通用 MruList?
我想要一个代表最近使用的缓存或列表(= MruList)的类。它应该是通用的,并且限于实例化时指定的容量(计数)。我希望界面是这样的:
public interface IMruList<T>
{
public T Store(T item);
public void Clear();
public void StoreRange(T[] range);
public List<T> GetList();
public T GetNext(); // cursor-based retrieval
}
每个 Store() 应该将项目放在列表的顶部(前面?)。 GetList() 应该返回有序列表中的所有项目,按最近的商店排序。如果我调用 Store() 20 次并且我的列表有 10 个项目,我只想保留最近存储的 10 个项目。 GetList 和 StoreRange 旨在支持在应用程序启动和关闭时检索/保存 MruList。
这是为了支持 GUI 应用程序。
我想我可能还想知道存储项目的时间戳。也许。没有把握。
在内部,您将如何实现它,为什么?
(不,这不是类(class)作业)
最佳答案
关于你的方法的一些评论
IEnumerable<T>
。返回 List<T>
要么强制预先显式复制,要么返回指向底层实现的指针。两者都不是很好的选择。 至于支持接口(interface)的最佳结构是什么。似乎最好的实现方式是拥有一种数据结构,它可以有效地添加到一端,并从另一端删除。双向链表非常适合这种情况。
关于c# - 用 C# 或 Java 对 MruList 进行高效建模,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/849527/