java多个集合元素组合排列

注意:不能出现list集合为null或size为0,以及不能出现重复数据 

       //封装数据
        Map<String,List<String>> map1 = new HashMap<String,List<String>>();
        List<String> list1 = new ArrayList<String>();
        list1.add("a");
        list1.add("b");
        list1.add("c");
        map1.put("维度",list1);
        Map<String,List<String>> map2 = new HashMap<String,List<String>>();
        List<String> list2 = new ArrayList<String>();
        list2.add("A");
        list2.add("B");
        list2.add("C");
        map2.put("维度",list2);
        Map<String,List<String>> map3 = new HashMap<String,List<String>>();
        List<String> list3 = new ArrayList<String>();
        list3.add("1");
        list3.add("2");
        list3.add("3");
        map3.put("维度",list3);
        Map<String,List<String>> map4 = new HashMap<String,List<String>>();
        List<String> list4 = new ArrayList<String>();
        list4.add("一");
        list4.add("二");
        list4.add("三");
        map4.put("维度",list4);
        List<Map<String,List<String>>> result = new ArrayList<Map<String,List<String>>>();
        result.add(map1);
        result.add(map2);
        result.add(map3);
        result.add(map4);

        //每个集合中元素与元素之间开始拼接,集合只有一个就没必要拼接了
        if(result != null && result.size() > 1){
            //用于控制循环次数
            int size = result.size();
            int i = 1;
            //取出第一个集合
            List<String> left = result.get(0).get("维度");
            do{
                //用于临时存储
                List<String> all = new ArrayList<String>();
                //取出第二个
                List<String> right = result.get(i).get("维度");
                //开始比对拼接
                for (String s : left) {
                    for (String s1 : right) {
                        String ss = s + s1;
                        all.add(ss);
                    }
                }
                //重新赋值给left,用于下次比对拼接
                left = all;
                i ++;
            }while (i < size);
            
            //最后left就是最终拼接的结果集
            for (String s : left) {
                System.out.println(s);
            }
            System.out.println(left.size());
        }

 输出的结果集:

aA1一
aA1二
aA1三
aA2一
aA2二
aA2三
aA3一
aA3二
aA3三
aB1一
aB1二
aB1三
aB2一
aB2二
aB2三
aB3一
aB3二
aB3三
aC1一
aC1二
aC1三
aC2一
aC2二
aC2三
aC3一
aC3二
aC3三
bA1一
bA1二
bA1三
bA2一
bA2二
bA2三
bA3一
bA3二
bA3三
bB1一
bB1二
bB1三
bB2一
bB2二
bB2三
bB3一
bB3二
bB3三
bC1一
bC1二
bC1三
bC2一
bC2二
bC2三
bC3一
bC3二
bC3三
cA1一
cA1二
cA1三
cA2一
cA2二
cA2三
cA3一
cA3二
cA3三
cB1一
cB1二
cB1三
cB2一
cB2二
cB2三
cB3一
cB3二
cB3三
cC1一
cC1二
cC1三
cC2一
cC2二
cC2三
cC3一
cC3二
cC3三
81

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值