java 二維數(shù)組中的元素所有組合

原文
二維數(shù)組矩陣

/**
     * @param array 目標(biāo)數(shù)組
     * @return 矩陣結(jié)果
     * @description: 根據(jù)給定二維數(shù)組,輸出排列組合矩陣
     */
    public String[][] generateMatrix(String[][] array) {
        ArrayList<Integer> lengthArr = new ArrayList<>();
        ArrayList<Integer> productArr = new ArrayList<>();
        int length = 1;
        for (int i = 0; i < array.length; i++) {
            int len = array[i].length;
            lengthArr.add(len);
            int product = i == 0 ? 1 : array[i - 1].length * productArr.get(i - 1);
            productArr.add(product);
            length *= len;
        }
        String[][] result = new String[array.length][length / array.length];
        for (int i = 0; i < length; i++) {
            StringBuilder item = new StringBuilder();
            for (int j = 0; j < array.length; j++) {
                item.append(array[j][(int) (Math.floor(i / productArr.get(j)) % lengthArr.get(j))]);
            }
            int index1 = i % array.length;
            int index2 = i / array.length;
            result[index1][index2] = item.toString();
        }
        return result;
    }

二維數(shù)集合

  /**
     * @param array 目標(biāo)數(shù)組
     * @return 排列組合結(jié)果
     * @description: 根據(jù)給定二維數(shù)組,輸出排列組合結(jié)果
     */
    public ArrayList<String> generateList(String[][] array) {
        ArrayList<Integer> lengthArr = new ArrayList<>();
        ArrayList<Integer> productArr = new ArrayList<>();
        ArrayList<String> result = new ArrayList<>();
        int length = 1;
        for (int i = 0; i < array.length; i++) {
            int len = array[i].length;
            lengthArr.add(len);
            int product = i == 0 ? 1 : array[i - 1].length * productArr.get(i - 1);
            productArr.add(product);
            length *= len;
        }
        for (int i = 0; i < length; i++) {
            StringBuilder item = new StringBuilder();
            for (int j = 0; j < array.length; j++) {
                item.append(array[j][(int) (Math.floor(i / productArr.get(j)) % lengthArr.get(j))]);
            }
            result.add(item.toString());
        }
        return result;
    }

測試代碼

    //獲取矩陣結(jié)果
        String[][] matrix = generateMatrix(arr);
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j] + ",");
            }
            System.out.println();
        }

        System.out.println("**********************************************************");

        //獲取集合
        ArrayList<String> list = generateList(arr);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

打印結(jié)果

> Task :lib:MyClass.main()
aaaaaa,bbbaaa,abbbbb,baacc,
baaaaa,aaabbb,bbbbbb,abbcc,
abbaaa,baabbb,aaacc,bbbcc,
**********************************************************
aaaaaa
baaaaa
abbaaa
bbbaaa
aaabbb
baabbb
abbbbb
bbbbbb
aaacc
baacc
abbcc
bbbcc
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容