我从一个函数获得一个包含以下内容的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的?
提前致谢:)
答案 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));
}
}