0

考虑到http://prohost.lt/stack/q.png中描述的结构

在主数组列表中,我们有 n 个元素(子数组列表)(对于图像,我们可以考虑 n=3)。

如何通过所有子数组列表进行动态循环以获得:

sarraylist1.get(0), sarrayList2.get(0), .. sarraylistN.get(0)

如果n = 3,它将是

for(sarraylist1){
    for( sarraylist2){
        for(sarraylist3){
            element from every list
        }
    }
}
4

4 回答 4

1

也许我误解了你在问什么,但是像这样简单的事情行不通吗?

List<List> lists = new ArrayList<List>();
for(List l : lists){
    for(List subl: l)
        Object o = subl.get(0);
}
于 2013-04-10T18:59:08.220 回答
0

看了你的评论后,我建议你用它recursive approach来解决你的问题。

public void recursiveCall(ArrayList list)
{
  for ( Object obj : list)
  {
    if (obj instanceOf ArrayList)
    {
      recursiveCall((ArrayList)obj);
    }
    else
    {
       System.out.print(obj);
    }
  }
}
于 2013-04-10T18:59:19.417 回答
0

根据您的图像方案,您还可以使用“for while 循环”来执行此操作:

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));
        }
    }
}

但如前所述,递归将是解决问题的一个非常好的组合:)。

此致。

于 2013-04-10T19:04:46.100 回答
0

如果我理解正确,你有一个List包含 nList的你想要获取每个列表的第一个、第二个等元素。这段代码就是这样做的。

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
}

您需要知道最大 subList 的大小才能获取该列表的所有元素,这就是它所highestSizeOfChildrenList代表的内容。

于 2013-04-10T19:11:47.627 回答