首页 > 编程语言 > 详细

java之数组交叉遍历组合

时间:2016-09-05 11:45:40      阅读:253      评论:0      收藏:0      [点我收藏+]
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之数组交叉遍历组合

原文:http://www.cnblogs.com/go4mi/p/5841396.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!