查找集合的所有子集(PowerSet)

Sha*_*nKo 4 java set

我想找到给定集合的所有子集.我得到的字符串集定义如下:HashSet<String> L我想在循环中使用它的所有子集:for eachL的子集 做一点事.这样做有一个简单的方法,复杂度低吗?

Sha*_*nKo 12

好的,我使用了这个算法(L是一组字符串):

powerSet = new HashSet<List<String>>();
List<String> mainList = new ArrayList<String>(L);
buildPowerSet(mainList,mainList.size());
Run Code Online (Sandbox Code Playgroud)

和,

private static void buildPowerSet(List<String> list, int count)
{
    powerSet.add(list);

    for(int i=0; i<list.size(); i++)
    {
        List<String> temp = new ArrayList<String>(list);
        temp.remove(i);
        buildPowerSet(temp, temp.size());
    }
}
Run Code Online (Sandbox Code Playgroud)