Java 多维数组列表对
我现在正在学习Java,在使用多维数组列表时遇到了一个障碍。我有3个主数组(列表),我想有某种关系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,
[
[[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类中询问主持人!