public static void main(String[] args) {
char[] chs = {'A','B','C','D','E'};
List<String> result = new ArrayList<>();
comb(chs,result);
result = result.stream().sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList());
System.out.println(result);
System.out.println(result.size());
}
public static void comb(char[] chs,List<String> result) {
int len = chs.length;
int bits = 1 << len;
for (int i = 0; i < bits; ++i) {
int t;
StringBuilder a= null;
for (int j = 0; j < len; j++) {
t = 1 << j;
if ((t & i) != 0) {
if(!StringUtils.isBlank(String.valueOf(chs[j])) && a != null) {
a.append(chs[j]);
}else {
a = new StringBuilder(String.valueOf(chs[j]));
}
}
}
if(a != null) {
result.add(a.toString());
}
}
}
输出结果: