Java 如何为列表中的某个项目创建子集,这些元素组合列表中的其他项目?

Java 如何为列表中的某个项目创建子集,这些元素组合列表中的其他项目?,java,memory-management,collections,subset,Java,Memory Management,Collections,Subset,假设我有一个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,a], [b,c], [b,d], [b,a,

假设我有一个
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,a], [b,c], [b,d], [b,a,c], [b,a,d], [b,c,d] without the empty and single subset([b])
类似地,如果我想要
b
,那么输出将是:

[a,b], [a,c], [a,d], [a,b,c], [a,b,d], [a,c,d] without the empty and single subset([a])
[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));
  }
});
Set elems=Sets.newHashSet(Set);
元素移除(目标);
设置功率集=设置功率集(elems);
Collection SubsetWithTarget=Collections2.transform(
powerSet,新函数(){
公共集合应用(集合集合没有目标){
返回set.union(setWithoutTarget,Collections.singleton(target));
}
});

(披露:我为Guava撰稿。)

添加了
家庭作业
标签,因为我最近看到了一些与此非常类似的问题,您是一个新用户,任何人都不可能需要编写在现实世界中实现这一点的代码