java之数组交叉遍历组合

Posted HelloWorld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    }
}

 

以上是关于java之数组交叉遍历组合的主要内容,如果未能解决你的问题,请参考以下文章

全新Java入门到架构师课程之Java15编程基础-数组:数组声明初始化数组元素的界限和遍历

Java数组的--遍历

两个数组交叉合并为一个数组

遍历整数数组所有组合的算法

Java之数组遍历

基于JAVA的设计模式之组合模式