【发布时间】:2011-04-29 12:39:03
【问题描述】:
我正在寻找一个合集:
- 是一个
Deque/List- 即支持在“顶部”插入元素(最新项目位于顶部) -deque.addFirst(..)/list.add(0, ..)。可能是Queue,但迭代顺序应该是相反的 - 即最近添加的项目应该排在第一位。 - 有界 - 即限制为 20 个项目
- 达到容量时自动丢弃最旧的项目(那些“在底部”,首先添加)
- 非阻塞 - 如果双端队列为空,则检索不应阻塞。它也不应该阻塞/返回false/null/抛出异常是双端队列已满。
- 并发 - 多个线程应该能够对其进行操作
我可以将LinkedBlockingDeque 包装到我的自定义集合中,在add 操作中检查大小并丢弃最后一个项目。有更好的选择吗?
【问题讨论】:
-
"非阻塞 - 如果双端队列为空,则检索不应阻塞。它也不应返回 null / 如果双端队列已满,则抛出异常。" - 从空列表中检索项目时应该发生什么?既不异常,也不阻塞,也不返回
null? -
在检索
null时可以返回。如果双端队列已满,则应添加该项目,而旧项目 - 丢弃 -
只是说明 LinkedBlockingDeque 不是并发的。
-
我认为你说的是队列而不是双端队列。
标签: java collections