Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多维数组列表对_Java_Arrays_Oop_Arraylist - Fatal编程技术网

Java 多维数组列表对

Java 多维数组列表对,java,arrays,oop,arraylist,Java,Arrays,Oop,Arraylist,我现在正在学习Java,在使用多维数组列表时遇到了一个障碍。我有3个主数组(列表),我想有某种关系 Arraylist1:mainCategory(称为mainCat) Arraylist2:子类别(称为子类别) Arraylist3:主持人(称之为mod) 我正在尝试创建一个3Darraylist,如下所示: [ [[mainCat1, subCat1, subCat2, subCat3], [mod1, mod2, mod3, mod4]], [[mainCat2, subCat1,

我现在正在学习Java,在使用多维数组列表时遇到了一个障碍。我有3个主数组(列表),我想有某种关系

  • Arraylist1:mainCategory(称为mainCat)
  • Arraylist2:子类别(称为子类别)
  • Arraylist3:主持人(称之为mod)
  • 我正在尝试创建一个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=new ArrayList();
    
    但我无法理解更多的一维数组列表


    我想使用“.add”将数据填充到“my3dArraylist”中,为了使它看起来像上面的示例,我该怎么做?

    老实说,我不认为使用三维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;
    }
    
    创建公共静态列表(int dim1、int dim2、int dim3)
    {
    List list1=新阵列列表(dim1);
    对于(int i=0;i
    参考:


    祝你好运

    如果你想手动操作它,现在开始

    初始化变量

            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内部阵列
    [mod1、mod2、mod3、mod4]

        firstRowSecondColumn.add(moderator.get(0));
        firstRowSecondColumn.add(moderator.get(1));
        firstRowSecondColumn.add(moderator.get(2));
        firstRowSecondColumn.add(moderator.get(3));
    
    构建第一个二维阵列
    [[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));
    
        array2dSecondRow.add(secondRowFirstColumn);
        array2dSecondRow.add(secondRowSecondColumn);
    
    构造第二个2D数组
    [mod1、mod2、mod3]

        secondRowSecondColumn.add(moderator.get(0));
        secondRowSecondColumn.add(moderator.get(1));
        secondRowSecondColumn.add(moderator.get(2));
    
        array2dSecondRow.add(secondRowFirstColumn);
        array2dSecondRow.add(secondRowSecondColumn);
    
    构建三维阵列

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


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

    您的问题是什么?你说你不明白,但你想做什么?对不起,也许我不是很清楚。我想使用“.add”用数据填充“my3daraylist”,使其看起来像上面的示例。谢谢,尼克,谢谢你的回复。老实说,我想从该领域的专家那里知道最好的方法。我建立了一个类别(和子类别)列表,该列表的大小灵活,并且我可以为每个类别分配主持人。我还想随时检索每个(子)类别的版主,以一种“配对”的方式。我认为,尽管这将是更多的工作,但您应该开始考虑更多面向对象的内容。您可以轻松创建一个版主、类别和子类别对象。在类别中列出子类别,在版主中列出类别。之后,您还可以通过将其添加为属性,从category类中询问主持人!