【问题标题】:Subsets of size "k" using Guava使用 Guava 的大小为“k”的子集
【发布时间】:2017-10-06 15:34:15
【问题描述】:

我有大约 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 的所有子集,但我找不到它。我错过了什么吗?

【问题讨论】:

  • 之后你想对结果做什么?您需要Set 界面功能还是Iterable 适合您的用例?
  • Iterable 没问题,谢谢

标签: java set subset guava


【解决方案1】:

“大小为 k 的所有子集的集合”为Sets.combinations

(我认为我们没有直接的方法来生成所有大小为 k 或更小的子集,但正如您所指出的,从combinations 构建它很容易——尽管如果您想要全部在一个Set,正如 Xaerxess 所问,您需要自己构建 Set。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多