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