java - 我应该使用什么类型的阻塞队列?

标签 java data-structures collections queue

我想实现一个阻塞,我可以在任何时间、任何方式添加元素。但我必须能够按顺序访问它们。

例如,考虑一个包含 x 个元素的队列,其中添加了元素 1、4、8、10。因此可以访问 10,但在添加和访问 9 之前,不能访问 8。简而言之,所有元素都是相互关联的。

如果 java 已经实现了这种类型的集合,请告诉我。所以我可以直接使用它。

最佳答案

你是在谈论堆栈还是队列,这取决于你是否希望它们是 FIFOLIFO ,结合首先按数字顺序插入元素 - 这意味着您在插入时对元素进行排序,因此它们始终以正确的数字顺序排列。

通过在排序时按数字顺序对元素进行排序,可以保证在您删除它们时它们将按照您期望的顺序排列。

您可以使用 Java 的 LinkedList 将元素插入列表中您想要的位置,也可以根据需要从列表的“后部”或“前部”删除它们。

最后,为了确保您不能删除一个项目,除非它是序列中的下一个,您需要在从列表中删除它之前简单地检查该值以确保它是顺序上的下一个 删除最后一个元素之后。如果它没有通过该标准,则返回“false”或其他一些值,表明此时无法从列表中删除任何内容。

另外,请检查这个问题:Creating a blocking Queue<T> in .NET? - 它不是 Java,但非常相似,可能会提供一些见解。

关于java - 我应该使用什么类型的阻塞队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8505157/

相关文章:

java - 自动化 jar 输入

C++ 初始化静态堆栈

algorithm - 知道如何将这个 O(n^2) 算法转换为 O(n)

javascript - 优化: find from a flattened recursive structure by index

java - 从指定返回 Collection<ParentType> 的方法返回 Collection<ChildType>

collections - 如何在 Kotlin 中无限重复序列?

java - 并发多线程批量向Mysql插入/更新数据

java - Wicket 中的 ResourceReferences 是什么,它们是如何工作的?

java - 在方法签名中将数组作为参数传递的替代语法是什么?

data-structures - Lucene (Solr/ElasticSearch) 是如何快速进行过滤词条计数的?