我的应用程序中有许多队列和优先级队列。我想轻松地访问这些队列中的第n个项目,但没有看到使用API实现这一点的简单方法。
我想我可以创建一个Iterator并迭代到第n个元素,或者使用toArray()[index],但似乎应该有一种更简单的方法。
我是不是遗漏了什么?
发布于 2012-03-10 00:38:12
我是不是漏掉了什么?
是-通过索引访问元素不是队列概念的一部分。
如果你需要通过索引来访问元素,你需要一个列表,而不是一个队列。
发布于 2012-03-10 00:37:51
队列的整个要点是仅向头部(第一个元素)公开访问。如果您希望任意访问线性数据结构中的元素,请使用List (如果您执行的查找比推送/pops多得多,请考虑使用ArrayList,因为LinkedList没有针对随机访问进行优化)。
发布于 2012-03-10 00:38:23
对你来说,最简单的解决方案是使用自平衡的binary search tree,例如AVL tree, splay tree or red-black tree。它允许您在log( n)时间内通过元素的键访问元素,并以O(log + k)的顺序遍历对象,其中k是迭代的元素数。!!
https://stackoverflow.com/questions/9637631
复制相似问题