0
是否有这样的数据结构,结合Queue
和Hashmap
?是否有这样一个结合队列和散列表的数据结构?
除了FIFO(enqueue
/dequeue
),其中一个队列正常了,我想
- 排队的时候,总是带着
key
排队行为, - 没有密钥偷看时,返回头队列
- 与键偷看时的,返回与排队的第一个元素此键
- 没有密钥出队时,移除第一元件以往排队
- 用钥匙出队时,除去具有关键
我不知道这样的数据结构,在野外已经存在的所有元素?
是否有这样的数据结构,结合Queue
和Hashmap
?是否有这样一个结合队列和散列表的数据结构?
除了FIFO(enqueue
/dequeue
),其中一个队列正常了,我想
key
排队行为,我不知道这样的数据结构,在野外已经存在的所有元素?
不,没有。但是,您可以将两者结合起来以实现您想要的行为(尽管您将不得不一路做出折中)。
要做到这一点,您将存储:
HashMap<Key, ReferenceToFIFOElement>
或HashMap<Key, Set<ReferenceToFIFOElement>>
。FIFO<Item>
当你排队,你先在队列的顶部添加元素。然后,如果密钥尚未注册(或将所述引用添加到映射到设置案例中的给定密钥的引用桶中),则使用对新创建的元素的引用来更新散列映射。只需检索密钥并访问引用的项目(或者设置案例中的第一个引用项目,或者如果没有提供密钥,则可以访问顶部)。
出列是真正的权衡将发生:
然而,在现实中却可能更加复杂,这取决于数据结构选择的FIFO的引擎盖下的地方:
带密钥的队列是优先级队列。但钥匙必须是独特的和可订购的。 –
@miparnisari感谢您指出。虽然关键是可订购/可排序的不是我正在寻找的财产 – user2829759