我想寫一個數據結構,它是Stack和HashSet組合的快速推/流行/成員資格(我正在尋找恆定時間的操作)。想想Python的OrderedDict。堆棧和哈希聯合
我試了幾件事,我想出了以下代碼:HashInt和SetInt。我需要向源文件添加一些文檔,但基本上我使用帶有線性探測的散列將索引存儲在密鑰的向量中。由於線性探測總是將最後一個元素放在連續範圍的已填充單元格的末尾,因此pop()無需複雜的刪除操作即可輕鬆實現。
我有以下問題:
- 數據結構消耗大量的存儲器(一些改進是顯而易見的:
stackKeys
比所需要的更大)。有些操作比我使用fastutil(例如:pop(),甚至在某些場景中使用push())要慢一些。我嘗試使用fastutil和trove4j來重寫類,但是我的應用程序的整體速度減半了。
對於我的代碼,你會有什麼樣的性能改進? 什麼開源庫/代碼你知道我可以試試嗎?
承認它,你只是想在同一句中使用散列和聯合;-) – fretje 2010-05-07 11:09:09
在標準API中沒有符合要求的類 - 也許是'java.util.concurrent.ConcurrentSkipListMap'? – Jesper 2010-05-07 11:38:52
「按鍵的自然排序」。 ConcurrentSkipListMap不保留插入順序。但我正在研究'LinkedHashMap'。 – Alexandru 2010-05-07 11:45:24