import java.util.ArrayList; public class AllSubsets { private static ArrayList> expand(ArrayList tt, int ii, ArrayList xpr) { //System.out.println("Expand on " + xpr + " " + ii); ArrayList> ret = new ArrayList<>(); if (ii >= tt.size()) { //System.out.println("Return []"); //ret.add(xpr); return ret; } for (int j = ii; j < tt.size(); j++) { ArrayList n = (ArrayList) xpr.clone(); n.add(tt.get(j)); ret.addAll(expand(tt, j+1, n)); ret.add(n); } return ret; } public static ArrayList> allSubsets(ArrayList tt) { ArrayList> ret = new ArrayList<>(); for (int ii = 0; ii < (tt.size() - 0); ii++) { ArrayList> tmp = new ArrayList<>(); ArrayList alt = new ArrayList<>(); alt.add(tt.get(ii)); tmp = expand(tt, ii + 1, alt); tmp.add(alt); System.out.println(tmp); ret.addAll(tmp); } return ret; } public static void main(String[] args) { ArrayList gg = new ArrayList<>(); for (int i=1; i<7; i++) gg.add(i); ArrayList> aass = AllSubsets.allSubsets(gg); System.out.println("aass" + aass); } }