我正在学习Java,我在与多维Arraylists合作时遇到了障碍。我有3个主要数组(列表),我想要有某种关系。
我试图创建一个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;为了使它看起来像上面的例子,我该怎么做?
答案 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);
现在你可以继续构建,直到你得到你想要的列表