我有大约100万套,每套约30个元素。对于每一组,我想生成所有子集,直到#34; k"其中k将是3或4或5之类的东西。我是Guava的新手,并决定尝试它。我找到了powerSet方法(https://google.github.io/guava/releases/21.0/api/docs/com/google/common/collect/Sets.html),它将为我的每个集合生成所有子集。
我可以遍历每个电源组,只采用大小小于或等于" k"的子集。但由于电源组的尺寸为2 ^ 30,因此效率非常低。
我认为Guava有一种方法可以让我生成一组大小为k的所有子集,但是我无法找到它。我错过了什么吗?
答案 0 :(得分:3)
"一组大小为k&#34的所有子集;是Sets.combinations
。
(我认为我们无法直接生成大小为k或更小的所有子集,但正如您所指出的那样,从combinations
构建它很容易 - 尽管如果你想要一个Set
,就像Xaerxess所要求的那样,你需要自己构建Set
。)