考虑到http://prohost.lt/stack/q.png
中描述的结构在主arrayList中我们有n个元素(子数组列表)(对于图像我们可以考虑n = 3)。
如何通过所有子数组列表进行动态循环以获得:
sarraylist1.get(0),sarrayList2.get(0),.. sarraylistN.get(0)
如果n = 3,则为
for(sarraylist1){
for( sarraylist2){
for(sarraylist3){
element from every list
}
}
}
答案 0 :(得分:1)
也许我误解了你的要求,但这样简单的事情会不起作用?
List<List> lists = new ArrayList<List>();
for(List l : lists){
for(List subl: l)
Object o = subl.get(0);
}
答案 1 :(得分:0)
在观看您的评论后,我建议您使用recursive approach
来解决您的问题。
public void recursiveCall(ArrayList list)
{
for ( Object obj : list)
{
if (obj instanceOf ArrayList)
{
recursiveCall((ArrayList)obj);
}
else
{
System.out.print(obj);
}
}
}
答案 2 :(得分:0)
根据您的图像方案,您也可以使用“for while loop”:
for (int mainArrayElements = 0; mainArrayElements < listOfLists.size(); mainArrayElements++) {
List arraysInMain = ((List)listOfLists.get(mainArrayElements));
for (int subArrayElements = 0; subArrayElements < arraysInMain.size(); subArrayElements++) {
List deepArray = ((List)listOfLists.get(subArrayElements));
for (int innerArrayElements = 0; innerArrayElements < deepArray.size() ; innerArrayElements++) {
System.out.println(deepArray.get(innerArrayElements));
}
}
}
但如前所述,递归将是一个非常好的组合来解决问题:)。
最好的问候。
答案 3 :(得分:0)
如果我理解正确,你有一个List
包含n List
s,你想要获得每个列表的第一个,第二个等元素。这段代码就是这样做的。
for (int i = 0; i < highestSizeOfChildrenList; i++) {
List<Object> lstOfItemInChild = new Arraylist<Object>();
for (List childList : mainList) {
if (i < childList.size()) {
lstOfItemInChild.add(childList.get(i));
}
}
// lstOfItemInChild now contains all the element i of the sub arrays
}
您需要知道最大的子列表的大小才能获得该列表的所有元素,即highestSizeOfChildrenList
代表的内容。