猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
是否有固定大小的队列来删除多余的元素?
我需要一个固定大小的队列。当我添加一个元素并且队列已满时,它应该自动删除最旧的元素。
Java中是否有为此实现的现有实现?
婷婷同学_
浏览 464
回答 3
3回答
慕虎7371278
Java语言和运行时中没有现有的实现。所有Queue都扩展了AbstractQueue,其文档明确指出,将元素添加到完整队列总是以异常结束。最好(非常简单)将Queue包装到您自己的类中,以具有所需的功能。再一次,由于所有队列都是AbstractQueue的子级,因此只需将其用作内部数据类型,您就应该有一个灵活的实现,它几乎可以在任何时间运行:-)更新:如下所述,有两种开放的实现方式(伙计们,这个答案已经很老了!),有关详细信息,请参见此答案。
0
0
0
九州编程
实际上,LinkedHashMap完全可以满足您的需求。您需要重写该removeEldestEntry方法。最多包含10个元素的队列的示例: queue = new LinkedHashMap<Integer, String>() { @Override protected boolean removeEldestEntry(Map.Entry<Integer, String> eldest) { return this.size() > 10; } };如果“ removeEldestEntry”返回true,则将最旧的条目从地图中删除。
0
0
0
郎朗坤
我只是这样实现了一个固定大小的队列:public class LimitedSizeQueue<K> extends ArrayList<K> { private int maxSize; public LimitedSizeQueue(int size){ this.maxSize = size; } public boolean add(K k){ boolean r = super.add(k); if (size() > maxSize){ removeRange(0, size() - maxSize); } return r; } public K getYoungest() { return get(size() - 1); } public K getOldest() { return get(0); }}
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续