Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中找到数组的所有子集?_Java_Arrays_Dynamic_Set - Fatal编程技术网

如何在java中找到数组的所有子集?

如何在java中找到数组的所有子集?,java,arrays,dynamic,set,Java,Arrays,Dynamic,Set,我需要用java找到数组的所有子集。例如,如果我们有一个集合{1,2,3},那么我应该得到 {},{1},{2},{3},{1,2},{2,3},{1.3},{1,2,3}您可以这样做,以避免需要递归解决方案 public static <T> void printCombinations(T[] arr) { for(long i = 0, max = 1L << arr.length; i < max; i++) { Set<T&g

我需要用java找到数组的所有子集。例如,如果我们有一个集合{1,2,3},那么我应该得到
{},{1},{2},{3},{1,2},{2,3},{1.3},{1,2,3}

您可以这样做,以避免需要递归解决方案

public static <T> void printCombinations(T[] arr) {
    for(long i = 0, max = 1L << arr.length; i < max; i++) {
        Set<T> ts = new HashSet<>();
        for(int j = 0; j < arr.length; j++) {
            if ((i >> j) != 0)
                ts.add(list.get(j));
        }
        System.out.println(ts);
    }
}
公共静态无效打印组合(T[]arr){
对于(长i=0,最大1L>j)!=0)
ts.add(list.get(j));
}
系统输出打印项次(ts);
}
}

编写一个递归方法,您可以先将每个元素单独传递给该方法,然后一次传递两个元素。您是否尝试过编写代码?@Saurabhjhunjhunla:如果这样做,您需要注意不要发出重复项。@Bathsheba:这实际上取决于您的实现过程。您不断地将值从第一个元素传递到最后一个元素。不要尝试与以前的元素组合。第二,如果你觉得有可能,继续将生成的集合添加到父集合中。