全排列(JAVA)

/**
* 全排列结果集
*/
private List<String> fullPermutationArr;

/**
* 全排列
*
* @param arr
* @param str
*/
private void fullPermutation(List<Long> arr, String str) {
Integer cnt = arr.size();
if (cnt == 1) {
fullPermutationArr.add(StringUtils.isEmpty(str) ? arr.get(0) + "" : str + "," + arr.get(0));
} else {
for (int i = 0; i < arr.size(); i++) {
Long tmp = arr.get(0);
arr.set(0, arr.get(i));
arr.set(i, tmp);
List<Long> arr2 = new ArrayList<>(arr);
arr2.remove(0);
fullPermutation(arr2, StringUtils.isEmpty(str) ? arr.get(0) + "" : str + "," + arr.get(0));
}
}
}

// 调用
this.fullPermutationArr= new ArrayList<>();

fullPermutation(yourList, "");

List<String> result = this.fullPermutationArr;
posted @ 2018-10-19 17:22  lindsayYang  阅读(394)  评论(0编辑  收藏  举报