【发布时间】:2022-11-14 05:12:01
【问题描述】:
是否可以创建一个HashSet<Long>,它将像具有固定大小的缓冲区一样工作,并且仍然具有O(1) 复杂性(或至少相似)?
我需要一个 HashSet 来一个一个地保存大量的 Longs(没有重复),然后尽可能快地通过contains(Long) 读取它。
我的用例是 1 天内大约 1000 万长。这就是为什么我需要一个有限制的循环缓冲区。然后,我可以将 HashSet 的大小限制为例如 100 万个,并且当我在集合中超过 100 万个项目时开始覆盖旧项目。
我试过的:HashMap<Int, Long> 和 Int currentIndex, Int maxItems 很有价值。当 currentIndex > maxItems 时,我能够开始覆盖旧值...可悲的是,在这个 HashMap 中按值搜索很慢。
【问题讨论】:
-
有了这样的分数你应该知道发布你的代码,给出实际和预期的结果......