zoukankan      html  css  js  c++  java
  • java之数组交叉遍历组合

    package cn.go4mi.util;
    
    
    public class Turns {
        //测试main方法
        public static void main(String[] args) {
            String [] a={"a","b","c"};
            String [] b={"d","e"};
            String [] c={"f","j"};
            String [] d={"h","i"};
            String[] add = new Turns().turns(a, b,c,d);
            for (String string : add) {
                System.out.println(string);
            }
    
        }
        /**
         * 两两遍历
         * @param array1
         * @param array2
         * @return
         */
        public static String[] doubleTurns(String [] array1,String[] array2){
            String [] target=new String[array1.length*array2.length];
            for (int i = 0,a1=0,a2=0; i <array1.length*array2.length; i++) {
                target[i]=array1[a1]+","+array2[a2];
                a2++;
                if(a2==array2.length){
                    a2=0;
                    a1++;
                }
            }
            return target;
        }
        /**
         * 遍历组合
         * @param arrays
         * @return
         */
        public static String[] turns(String[] ...arrays){
            if(arrays.length==1){
                return arrays[0];
            }
            if(arrays.length==0){
                return null;
            }
            //获得总结果数
            int count=0;
            for (int i = 0; i < arrays.length; i++) {
                count*=arrays[i].length;
            }
            String target[]=new String[count];
            //两两遍历
            for (int i = 0; i < arrays.length; i++) {
                if(i==0){
                    target=doubleTurns(arrays[0],arrays[1]);
                    i++;
                }else{
                    target=doubleTurns(target,arrays[i]);
                }
            }
            return target;
        }
    }




    <script>
    var s1 = ["a", "b", "c"];
    var s2 = ["d", "e", "f"];
    var s3 = ["x", "y", "z"];
    var s4 = ["x1", "y2", "z3"];
    var temp = [s1, s2 ,s3,s4];

    
    


    function recursionSub(list, count, array, ind, start, indexs) {
    start++;
    if (start > count - 1) {
    return null;
    }
    if (start == 0) {
    indexs = [100];
    }
    for (indexs[start] = 0; indexs[start] < array[start].length; indexs[start]++) {
    recursionSub(list, count, array, 0, start, indexs);
    if (start == count - 1) {
    var temp = [];
    for (var i = count - 1; i >= 0; i--) {
    temp[start - i] = array[start - i][indexs[start - i]];
    }
    list.push(temp);
    }
    }
    return list;
    }
    var result = [];
    recursionSub(result, temp.length, temp, 0, -1, []);
    for (var i = 0; i < result.length; i++) {
    console.log(result[i].join(','));
    }
    </script>



  • 相关阅读:
    hdu 4686 Arc of Dream
    监测系统的情况,你必须知道的两三事!
    [置顶] access函数-linux
    IE9 "CSS 因 Mime 类型不匹配而被忽略“问题
    [置顶] mkdir函数-linux
    adb 异常报错----adb server is out of date. killing... ADB server didn't ACK * failed to start daemon *
    Hbase深入学习(一) 什么是hbase
    Qt5 基于TCP传输的发送/接收文件服务器(支持多客户端)
    组队练习赛(Regionals 2012, North America
    CSS 注意事项
  • 原文地址:https://www.cnblogs.com/go4mi/p/5841396.html
Copyright © 2011-2022 走看看