需求如下:
假如有三个数获取不同的组合
1、2、3
不同的组合有
1
2
3
1、2
2、3
1、3
1、2、3
Java代码实现:
public<E> List<List<E>> arrangeSelect(List<E> data ) {
int nCnt = data.size();
int nBit = (int) (Math.pow(2, nCnt) - 1);
List<List<E>> arrangeAllSet = new ArrayList<List<E>>();
for (int i = 1; i <= nBit; i++) {
List<E> arrangeSet = new ArrayList<E>();
for (int j = 0; j < nCnt; j++) {
if ((i << (31 - j)) >> 31 == -1) {
arrangeSet.add(data.get(j));
}
}
arrangeAllSet.add(arrangeSet);
}
return arrangeAllSet;
}