一次从一个arrayLists中获取元素

时间:2013-04-10 18:45:23

标签: java loops arraylist

考虑到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
        }
    }
}

4 个答案:

答案 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代表的内容。