多维Arraylist配对

时间:2016-02-23 10:36:23

标签: java arrays oop arraylist

我正在学习Java,我在与多维Arraylists合作时遇到了障碍。我有3个主要数组(列表),我想要有某种关系。

  1. Arraylist1:mainCategory(称之为mainCat)
  2. Arraylist2:subCategory(称之为subCat)
  3. Arraylist3:主持人(称之为mod)
  4. 我试图创建一个3Darraylist,如下所示:

    [
      [[mainCat1, subCat1, subCat2, subCat3], [mod1, mod2, mod3, mod4]],
      [[mainCat2, subCat1, subCat2], [mod1, mod2, mod3]],
      [[mainCat3, subCat1, subCat2, subCat3, subCat4], [mod1, mod2, mod3, mod4, mod5]],
    ]
    

    我尝试过使用:

    ArrayList<ArrayList<ArrayList<String>>> my3dArraylist = new ArrayList<ArrayList<ArrayList<String>>>();
    

    但我无法理解更多的单维arraylist。

    我想填充“my3dArraylist&#39;数据使用&#39; .add&#39;为了使它看起来像上面的例子,我该怎么做?

2 个答案:

答案 0 :(得分:1)

说实话,我不认为使用三维arrayList是一种干净的做法。也许您应该为您的功能看一些其他设计。如果你能澄清你想要达到的目标,我们或许可以提供更多帮助。

当然可以!以下是工作代码的示例:

public static <E> List<List<List<E>>> create(int dim1, int dim2, int dim3)
{
    List<List<List<E>>> list1 = new ArrayList<List<List<E>>>(dim1);
    for (int i = 0; i < dim1; i++)
    {
        List<List<E>> list2 = new ArrayList<List<E>>(dim2);
        for (int j = 0; j < dim2; j++)
        {
            List<E> list3 = new ArrayList<E>(dim3);
            for (int k = 0; k < dim3; k++)
            {
                list3.add(null);
            }
            list2.add(list3);
        }
        list1.add(list2);
    }
    return list1;
}

参考:http://www.coderanch.com/t/431507/java/java/Dimensional-ArrayList

祝你好运

答案 1 :(得分:1)

如果你想在这里手动操作它,你可以去

初始化变量

        ArrayList<String> mainCategory = new ArrayList<>();
        ArrayList<String> moderator = new ArrayList<>();
        ArrayList<String> subCategory = new ArrayList<>();

        ArrayList<ArrayList<ArrayList<String>>> array3d = new ArrayList<>();

        ArrayList<ArrayList<String>> array2dFirstRow= new ArrayList<>();
        ArrayList<ArrayList<String>> array2dSecondRow= new ArrayList<>();
        ArrayList<ArrayList<String>> array2dthirdRow= new ArrayList<>();

        ArrayList<String> firstRowFirstColumn = new ArrayList<>();
        ArrayList<String> firstRowSecondColumn = new ArrayList<>(); 
        ArrayList<String> secondRowFirstColumn = new ArrayList<>();
        ArrayList<String> secondRowSecondColumn = new ArrayList<>();
        ArrayList<String> thirdRowFirstColumn = new ArrayList<>();
        ArrayList<String> thirdRowSecondColumn = new ArrayList<>();

构建第一个1D内部数组 [mainCat1, subCat1, subCat2, subCat3]

    firstRowFirstColumn.add(mainCategory.get(0));
    firstRowFirstColumn.add(subCategory.get(0));
    firstRowFirstColumn.add(subCategory.get(1));
    firstRowFirstColumn.add(subCategory.get(2));

构建第二个1D内部数组 [mod1, mod2, mod3, mod4]

    firstRowSecondColumn.add(moderator.get(0));
    firstRowSecondColumn.add(moderator.get(1));
    firstRowSecondColumn.add(moderator.get(2));
    firstRowSecondColumn.add(moderator.get(3));

构建第一个2D数组 [[mainCat1, subCat1, subCat2, subCat3], [mod1, mod2, mod3, mod4]]

    array2dFirstRow.add(firstRowFirstColumn);
    array2dFirstRow.add(firstRowSecondColumn);

构建第三个1D数组 [mainCat2, subCat1, subCat2]

    secondRowFirstColumn.add(mainCategory.get(1));
    secondRowFirstColumn.add(subCategory.get(0));
    secondRowFirstColumn.add(subCategory.get(1));

构建第四个1D数组 [mod1, mod2, mod3]

    secondRowSecondColumn.add(moderator.get(0));
    secondRowSecondColumn.add(moderator.get(1));
    secondRowSecondColumn.add(moderator.get(2));

构建第二个2D数组 [mod1, mod2, mod3]

    array2dSecondRow.add(secondRowFirstColumn);
    array2dSecondRow.add(secondRowSecondColumn);

构建3D数组

[ [[mainCat1, subCat1, subCat2, subCat3], [mod1, mod2, mod3, mod4]], [[mainCat2, subCat1, subCat2], [mod1, mod2, mod3]] ]

    array3d.add(array2dFirstRow);
    array3d.add(array2dSecondRow);

现在你可以继续构建,直到你得到你想要的列表