【发布时间】:2013-06-01 02:55:58
【问题描述】:
我正在执行该类型的多次迭代:
masterSet=masterSet.union(setA)
随着集合的增长,执行这些操作所花费的时间也在增长(正如人们所期望的那样,我猜)。
我希望花费时间检查 setA 的每个元素是否已经在 masterSet 中?
我的问题是,如果我知道 masterSet 不包含 setA 中的任何元素,我可以更快地做到这一点吗?
[更新]
鉴于这个问题仍然在吸引观点,我想我会从下面的 cmets 和答案中弄清楚一些事情:
在进行迭代时,虽然我知道 setA 与masterSet 不同,因为它是如何构造的(无需处理任何检查),但我需要一些迭代唯一性检查。
我想知道是否有办法“告诉”masterSet.union() 程序这次不要打扰唯一性检查,因为我知道这与 masterSet 不同,只需快速添加这些元素,相信程序员的断言他们肯定是不同的。 Perhpas 通过调用一些不同的“.unionWithDistinctSet()”程序什么的。
我认为响应表明这是不可能的(无论如何,真正设置的操作应该足够快),但使用 masterSet.update(setA) 而不是 union 会稍微快一些。
我已经接受了最明确的答复,解决了我当时遇到的问题并继续我的生活,但我仍然很想知道我假设的 .unionWithDistinctSet() 是否会存在?
【问题讨论】:
-
你怎么知道元素不在
masterSet中?您是否先测试了元素? -
否 - 在某些迭代中,我知道通过 setA 的生成方式,masterSet 中不能有任何元素
-
只是检查;可能有机会直接更新
masterSet,而不必稍后再更新。