2017-10-06 60 views
0

我有大约100万套每套大约30个元素。对于每一组,我想生成所有大小为“k”的子集,其中k将是3或4或5.我是新来的番石榴,并决定尝试它。我找到了powerSet方法(https://google.github.io/guava/releases/21.0/api/docs/com/google/common/collect/Sets.html),它将为我的每个集合生成所有子集。使用番石榴的大小为“k”的子集

我可以循环遍历每个功率集,并只取得大小小于或等于“k”的子集。但由于功率集的大小为2^30,这看起来效率很低。

我以为番石榴会有一种方法可以让我生成一组大小为k的所有子集,但是我找不到它。我错过了什么吗?

+1

您想在事后处理结果?你需要'Set'接口功能还是'Iterable'确定你的用例? – Xaerxess

+0

Iterable是好的,谢谢 – Andrew

回答

3

“一组大小为k的所有子集”为Sets.combinations。 (我不认为我们有直接的方式来生成大小为k或更小的所有子集,但正如您所指出的那样,从combinations开始构建它很容易 - 但如果您希望将它全部放入一个Set ,如Xaerxess询问的那样,您需要自己构建Set。)

+0

很好,谢谢 – Andrew