ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

在C#或Java中对MruList进行高效建模

2019-07-24 08:02:19  阅读:280  来源: 互联网

标签:java c-2 data-structures class-design


您将如何在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个Stored项目. GetList和StoreRange旨在支持在应用程序启动和关闭时检索/保存MruList.

这是为了支持GUI应用程序.
我想我可能也想知道存储项目的时间戳.也许.不确定.

在内部,你将如何实现它,为什么?

(不,这不是课程作业)

解决方法:

关于您的方法的几点评论

>为什么Store返回T?我知道我刚添加的东西,除非你明确想要方法链接,否则将它还给我是没有必要的
>将GetNext()重构为一个新类.它表示一组不同的功能(存储与光标遍历),应由单独的接口表示.它还有可用性问题,因为当在同一堆栈上活动的两个不同方法想要遍历结构时会发生什么?
> GetList()应该可能返回IEnumerable< T>.返回列表< T>要么预先强制显式复制,要么返回指向底层实现的指针.两者都不是一个很好的选择.

至于什么是支持界面的最佳结构.似乎最好实现的是拥有一个有效添加到一端并从另一端移除的数据结构.双重链表很适合这个.

标签:java,c-2,data-structures,class-design
来源: https://codeday.me/bug/20190724/1520187.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有