2013-10-03 48 views
1

我有個類來包含以下相關的這個問題(XPOS,Ypos,時間戳)如何使用2個不同的搜索參數存儲一組數據?

尺寸是100×100區域(XPOS和Ypos)的數據,並有一個更新時間是時間戳的每個位置,然後爲下一次更新提供新的時間戳。

現在我可以去通過所有這些數據點,並找到任何類,其中時間戳是向上,並執行必要的行動。對我而言,這似乎效率低下。

替代方案我可以將它存儲在排序列表中,其中Timestamp是決策者,所以我只需要檢查直到找到一個條目還沒有準備好更新,更新它們並使用新的時間戳刪除/讀取它們。

現在我踢的,預期的下一個時間戳可以通過工作流程,通過XPOS和Ypos找到位置,這意味着我將不得不遍歷所有條目再次執行該修改。

我能與物體在兩個排序列表和100x100的陣列之中,問題是通過100×100陣列更新時間戳上市,將不會更新其在排序列表中的位置解決這個問題。

有沒有解決這個「雙排序」,而不需要經過完整列表無論從時間戳觸發點,或時間戳的陣列更新的好方法。

+0

我正在考慮添加包含的時間一個額外的類和對象的鏈接,而對象包含一個鏈接到這一點。在排序列表中使用此對象。如果時間戳從XPOS,Ypos參考更新,它只是空在此引用類自己的鏈接,並在列表中創建一個新的條目。這將給出快速忽略的排序的空鏈接對象。 – Taoh

回答

0

一種選擇是存儲在一個priority queue您的數據。該C5 Collection LibraryIntervalHeap將是一個很好的選擇。該IntervalHeap<T>.Replace方法可以讓你更換的項目(即:改變它的優先級,這將是Timestamp)直接。

+0

我不是下面如何幫助我,當我更新的時間戳來獲得在隊列中更新的對象位置。 – Taoh

+0

@Taoh您可以根據時間戳創建比較器。優先級隊列會自動對項目進行排序,並根據優先級(時間戳)爲您排隊。 –

+0

我只是不明白這一點......如果我更新,給它一個新的時間戳優先級隊列對象的時間戳,它只是更新其位置,而無需告知其發生的更新的隊列? – Taoh

相關問題