在Java中非常有效地使用几套联盟?

时间:2018-03-18 19:56:14

标签: java set set-union

我想非常有效地找到几个集合的并集,因为它的时间对整个系统有重要影响。

让我们认为我们的集合如下:

s1 - 1, 2, 3, 4, 5, 6
s2 - 1, 2, 4, 8, 10, 12, 15, 18, 21
s3 - 1, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33

根据一个解决方案:
他们事先找到了集合的交集。

s1, s2 (or s12) - 1, 2, 4 
s1, s3 (or s13) - 1 
s2, s3 (or s23) - 1

当需要计算这3组的并集时,它们具有单独的集合和交集集合。所以,

res1 = Sets.difference(s1, s12) 
res1 = Sets.difference(res1, s13)
finalRes.addAll(res1)

res2 = Sets.difference(s2, s23) 
finalRes.addAll(res2)

finalRes.addAll(s3)

实际上,我认为这个解决方案很有效,但我想知道:

  
      
  • 我们可以直接使用番石榴的Sets.union,但似乎上述解决方案比这更有效。
  •   
  • 我们可以使用最终集合,并且对于每个集合的每个元素,我们使用contains方法检查此最终集合是否包含元素。
  •   

如果我们有100套,你有什么建议?

0 个答案:

没有答案