|
|
1
4
首先,听起来你想要一套,而不是一张桌子。 其次,如果你想要O(1),你唯一的选择就是哈希集,它有内存开销。如果您愿意使用O(log(n)),那么TreeSet就可以正常工作,无需开销。 第三,如果元素已经存在,set的add(T)将返回false。听起来像你 真正地 想要一套而不是一张桌子。 O(log(n))仍然很快。当然不是O(1),但也不太破旧。你只需要决定(也许在一些测试之后)哪一个适合你。 |
|
|
2
2
|
|
|
3
1
你可以利用 Bloom filter ,而不是hashmap。这是一个概率数据结构。Bloom过滤器的问题是它将给出false+ve。请查看 implementation of bloom filter 。这将是比哈希映射更节省内存和更快的解决方案。 有关Bloom筛选器的详细信息: |
|
|
4
0
嘿, 因为您使用的是数据库,所以不能只将此信息存储在辅助数据库表或记录中吗?另外,如果您有一个树结构(因为您正在讨论父节点),为什么不使用树遍历算法,该算法标记已处理的节点。 看看这些 Breadth First Search/Depth First Search Animations 这些是维基百科上的条目 BFS 和 DFS . 一般来说,我会确保用对象/行跟踪处理标志。而不是单独的数据结构。 |
|
|
5
0
如果结果集的顺序正确,您能把“最后处理的”id保存在内存中吗?这样,您只需检查“当前id”与“最后id”-如果它们不同,则处理掉,否则跳到下一个记录? |