Java多个list集合如何把所有排列组合出来
我们可以使用递归的方式实现,每次递归时从一个集合中取出一个元素,然后递归处理剩下的集合,直到所有集合都为空。具体实现如下:
import java.util.*;
public class Combination {
public static void main(String[] args) {
List<List<Integer>> lists = new ArrayList<>();
lists.add(Arrays.asList(1, 2));
lists.add(Arrays.asList(3, 4));
lists.add(Arrays.asList(5, 6));
List<List<Integer>> result = combine(lists);
for (List<Integer> list : result) {
System.out.println(list);
}
}
public static List<List<Integer>> combine(List<List<Integer>> lists) {
List<List<Integer>> result = new ArrayList<>();
if (lists == null || lists.size() == 0) {
return result;
}
List<Integer> list = new ArrayList<>();
helper(lists, result, list, 0);
return result;
}
private static void helper(List<List<Integer>> lists, List<List<Integer>> result, List<Integer> list, int index) {
if (index == lists.size()) {
result.add(new ArrayList<>(list));
return;
}
List<Integer> currentList = lists.get(index);
for (int i = 0; i < currentList.size(); i++) {
list.add(currentList.get(i));
helper(lists, result, list, index + 1);
list.remove(list.size() - 1);
}
}
}
在这个例子中,我们有三个集合:{1,2},{3,4}和{5,6}。我们使用一个List<List
在combine方法中,我们首先对参数进行判断,然后创建一个空的List
最终,我们得到了所有的排列组合,将其打印出来即可。
原文地址: https://www.cveoy.top/t/topic/bfjd 著作权归作者所有。请勿转载和采集!