gpt4 book ai didi

java - 如何组合列表中的其他项目来为列表元素中的项目创建子集?

转载 作者:行者123 更新时间:2023-12-01 15:19:29 26 4
gpt4 key购买 nike

假设我有一个 ArrayList,其中包含 [a, b, c, d, ....] 等字符串。任何人都可以帮助我提供一个示例代码,我怎样才能得到包含此列表中所有可能的功率子集的结果,其中包括该列表中的特定字符串(除了单个子集和空子集)?

例如:如果我想从示例列表中获取包括 a 在内的所有功率子集,那么输出将是:

[a,b], [a,c], [a,d], [a,b,c], [a,b,d], [a,c,d] without the empty and single subset([a])

同样,如果我想要 b 那么输出将是:

[b,a], [b,c], [b,d], [b,a,c], [b,a,d], [b,c,d] without the empty and single subset([b])

由于示例列表中的所有项目都是字符串,因此当子集太丰富时,它们可能会出现内存问题。因为我需要一次将单个字符串的子集保留在内存中。就像为 a 创建子集一样,我需要这些子集进行进一步处理,然后删除它们,然后为 b 等等。所以我还需要帮助了解这种情况的优化解决方案是什么?

我需要 Java 方面的帮助。由于我不太擅长Java,如果有任何错误请原谅我!

最佳答案

如果总是只有一个特定元素,我建议从源集中删除目标元素,在剩余的集中使用 Guava 的 Sets.powerSet ,然后将目标元素添加到返回的集合。类似...

Set<String> elems = Sets.newHashSet(set);
elems.remove(target);
Set<Set<String>> powerSet = Sets.powerSet(elems);
Collection<Set<String>> subsetsWithTarget = Collections2.transform(
powerSet, new Function<Set<String>, Set<String>>() {
public Set<String> apply(Set<String> setWithoutTarget) {
return Sets.union(setWithoutTarget, Collections.singleton(target));
}
});

(披露:我为 Guava 做出了贡献。)

关于java - 如何组合列表中的其他项目来为列表元素中的项目创建子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11159733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com