java.util.queue的实现如何使用LIFO?
在 Java 文档中:
[...] 例外的是优先级队列,它根据提供的比较器或元素的自然顺序对元素进行排序,以及 LIFO 队列(或堆栈),它对元素进行 LIFO(后进先出)排序。出)
。 java.util.queue
的实现使用 LIFO 而不是 FIFO?
In Java doc:
[...] Among the exceptions are priority queues, which order elements according to a supplied comparator, or the elements' natural ordering, and LIFO queues (or stacks) which order the elements LIFO (last-in-first-out)
How implementation of java.util.queue
uses LIFO instead of FIFO?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您可以使用 Collections.asLifoQueue 方法将任何 Deque 用作 LIFO 队列:
You can use any Deque as a LIFO queue using Collections.asLifoQueue method:
您可以使用
java.util.LinkedList
并使用pop()
和push()
方法,并将其像堆栈一样使用,即后进先出队列。You can use a
java.util.LinkedList
and use thepop()
andpush()
methods and use it like a stack, which is a LIFO queue.队列的实现可以基于先进先出、优先级 和 LIFO - 这就是官方文档所说的。
当程序员第一次看到“队列”时,他会自动想到“它一定是 FIFO 顺序”(或最终优先顺序)。但正如文档所说,必须有可能使用 Queue 接口进行 LIFO 排序。让我向您解释一下如何做到这一点。
正如您所看到的,根据实现的不同,Queue 接口也可以用作 LIFO。
Implementation of the Queue can base on FIFO, priorities and LIFO - that is what official documentation says.
When a programmer first sees "Queue" he automatically thinks "it must be FIFO order" (or eventually prioritized order). But as documentation says there must be possibility to use Queue interface for LIFO ordering. Let me explain you how it can be done.
As you can see depending on the implementation, Queue interface can be used also as a LIFO.
这里提供的Stack和LinkedList只是一个集合。队列不是集合。它是并发包的一部分,可以与线程池一起使用。
我刚刚再次验证并阅读了您引用的javadoc。我认为使用 LIFO 队列的唯一选择是使用带有自定义比较器的优先级队列,该比较器根据插入时间以相反的顺序比较元素。
Stack and LinkedList offered here are just a collections. Queue is not a collection. It is a part of concurrency package and can be used with threadpools.
I have just verified again and read javadoc that you have quoted. I think that the only option to use LIFO queue is to use priority queue with custom comparator that compare elements according to the insertion time in reverse order.
Deque 可用作 LIFO 或 FIFO
Deque can be used as LIFO or FIFO
队列是一种使用先进先出技术的数据结构。
这是一个有用的链接:magi.toolkit。 util.queue 类 LIFOQueue
Queue is a data structure that uses a technique of First-In-First-Out.
Here's a useful link : magi.toolkit.util.queue Class LIFOQueue
我做了一个大小有限的后进先出队列。通过用新条目替换最旧的条目来维持有限的大小。实现基于LinkedList。
I made a LIFO queue with limited size. Limited size is maintained by replacing the oldest entries with the new ones. The implementation is based on LinkedList.