多维 Arraylist 配对
Posted
技术标签:
【中文标题】多维 Arraylist 配对【英文标题】:Multidimensional Arraylist pairing 【发布时间】:2016-06-05 03:31:19 【问题描述】:我目前正在学习 Java,但在使用多维 Arraylist 时遇到了障碍。我有 3 个主要的数组(列表),我想建立某种关系。
-
Arraylist1:mainCategory(称之为 mainCat)
Arraylist2: subCategory(称之为 subCat)
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>>>();
但我只是无法理解更多的单维数组列表。
我想使用 '.add' 用数据填充 'my3dArraylist' 以使其看起来像上面的示例,我该怎么做?
【问题讨论】:
您的问题是什么?你说你不明白,但你想做什么? 抱歉,我可能不是很清楚。我想使用“.add”用数据填充“my3dArraylist”,使其看起来像上面的示例。谢谢。 【参考方案1】:老实说,我不认为使用 3 维 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
祝你好运
【讨论】:
尼克,感谢您的回复。老实说,我想知道该领域专家的最佳方法。我建立了一个类别(和子类别)列表,它的大小既灵活又可以为每个类别分配主持人。我还想随时检索每个(子)类别的版主,有点像“配对”的方式。 我认为即使工作量更大,您也应该开始考虑更多面向对象。您可以轻松地制作主持人、类别和子类别对象。在 Category 中制作 SubCategories 列表,在 moderator 中制作类别列表。之后,您还可以通过将其添加为属性来从类别类中询问版主!【参考方案2】:如果你想在这里手动操作它,你去
初始化变量
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<>();
构造第一个一维内部数组[mainCat1, subCat1, subCat2, subCat3]
firstRowFirstColumn.add(mainCategory.get(0));
firstRowFirstColumn.add(subCategory.get(0));
firstRowFirstColumn.add(subCategory.get(1));
firstRowFirstColumn.add(subCategory.get(2));
构造第二个一维内部数组[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);
构造第三个一维数组 [mainCat2, subCat1, subCat2]
secondRowFirstColumn.add(mainCategory.get(1));
secondRowFirstColumn.add(subCategory.get(0));
secondRowFirstColumn.add(subCategory.get(1));
构造第四个一维数组 [mod1, mod2, mod3]
secondRowSecondColumn.add(moderator.get(0));
secondRowSecondColumn.add(moderator.get(1));
secondRowSecondColumn.add(moderator.get(2));
构造第二个二维数组 [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);
现在您可以继续构建,直到最终得到您想要的列表
【讨论】:
以上是关于多维 Arraylist 配对的主要内容,如果未能解决你的问题,请参考以下文章
Java - 迭代 ArrayList 并查找 Anagrams