import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/**
* java 列出一个字符串的全字符组合情况
* @author jiansx
* @date 2015-7-18
*/
public class Demo {
private static String[] arr = {"A","B","C","D","E","F","G"};
public static void main(String[] args) {
listAll(Arrays.asList(arr), "");
}
/**
* 将数组分为2部分,前缀+数组
* 前缀 = 前缀+数组移除的字符
* 数组 = 数组移除字符后剩下的数组
* 将数组中字符数据移除完成后,前缀即数组中的数据任一排列的数组
*/
public static void listAll(List candidate, String prefix) {
if(prefix.length()==arr.length){
System.out.println(prefix);
}
for (int i = 0; i < candidate.size(); i++) {
List tmp = new LinkedList(candidate);
listAll(tmp, prefix + tmp.remove(i));
}
}
}