2017-10-06 67 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