使用 Guava 的大小 "k" 的子集
Subsets of size "k" using Guava
我有大约 100 万套,每套大约有 30 个元素。对于每个集合,我想生成最大大小为 "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 的所有子集,但我找不到它。我错过了什么吗?
"A set of all subsets of size k" 是 Sets.combinations
。
(我认为我们没有直接的方法来生成大小为 k 或更小的所有子集,但正如您所指出的,从 combinations
构建它很容易——尽管如果您想要它正如 Xaerxess 所询问的那样,全部集中在一个 Set
中,您需要自己构建 Set
。)
我有大约 100 万套,每套大约有 30 个元素。对于每个集合,我想生成最大大小为 "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 的所有子集,但我找不到它。我错过了什么吗?
"A set of all subsets of size k" 是 Sets.combinations
。
(我认为我们没有直接的方法来生成大小为 k 或更小的所有子集,但正如您所指出的,从 combinations
构建它很容易——尽管如果您想要它正如 Xaerxess 所询问的那样,全部集中在一个 Set
中,您需要自己构建 Set
。)