我们可以使用递归的方式实现,每次递归时从一个集合中取出一个元素,然后递归处理剩下的集合,直到所有集合都为空。具体实现如下:

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方法来得到所有排列组合。

在combine方法中,我们首先对参数进行判断,然后创建一个空的List作为递归过程中的临时变量。接着,我们调用helper方法来进行递归处理。在helper方法中,我们首先判断当前的index是否等于集合的大小,如果等于则说明已经处理完了所有的集合,将当前的list加入到结果集中,然后返回。如果index不等于集合的大小,则表示还有集合需要处理,我们获取当前集合,然后遍历集合中的每个元素,将当前元素加入到临时变量list中,然后递归处理下一个集合,递归完成后,我们需要将当前元素从临时变量中移除,以便下一次循环时使用。

最终,我们得到了所有的排列组合,将其打印出来即可。

Java多个list集合如何把所有排列组合出来

原文地址: https://www.cveoy.top/t/topic/bfjd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录