在另一个ArrayList中获取ArrayList

时间:2017-03-10 17:57:27

标签: java arraylist

我从一个函数获得一个包含以下内容的ArrayList:

List main = new ArrayList();
List one = new ArrayList();
List two = new ArrayList();
List three = new ArrayList();

main.add(one);
main.add(two);
main.add(three);

现在我试图在另一个函数中获取main中每个ArrayList内的元素,其中参数是ArrayList" main":

function getMainItems(List main){
    List mainData = new ArrayList();    
    for(int i = 1; i < main.size() ; i++) {
    mainData.clear();
    mainData.addAll((ArrayList) main.get(i));
        for(int j=0;j<mainData.size();j++){
            /* do some stuff */
        }
    }
}

但我收到错误:

  

[Ljava.lang.Object;无法转换为java.util.ArrayList&#34;

我做错了什么?我应该如何从&#34; main&#34; ArrayList的?

提前致谢:)

3 个答案:

答案 0 :(得分:1)

(ArrayList) main.get(i)

您将变量本身转换为整个ArrayList

答案 1 :(得分:0)

首先,如果你知道你只是用arraylists填充第一个arraylist,那么就对它进行类型化。 ArrayList<ArrayList> mainArray = new ArrayList<ArrayList>(); 这有助于获取/设置/评估属于该阵列的内容。当你把东西拉到数组中时(如上所述),这是一种可怕的做法,因为这会降低你的代码速度并使下一代开发人员通常不太理解。

如果我理解正确的话,你试图将一个包含arraylists的arraylist中的所有变量放到另一个&#34; flat&#34;数组列表:

for (int x = 0; x<main.size();x++)
{
   //here we can access each array list with main.get(x).
   for (int y=0; y<main.get(x).size(); y++)
      //here you can do something with each element inside each nested arraylist : 
      //main.get(x).get(y)

}

答案 2 :(得分:-1)

for(int i=0; i<main.size(); i++) {
    List list = (List)main.get(i);
    for(int j=0; j<list.size(); j++) {
        System.out.println(list.get(j));
    }
}