我想写一个数据结构,它是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