无法从Java中的深ArrayList获取值

时间:2011-10-19 09:53:00

标签: java arraylist

我尝试在ArrayList中存储并获取数字。我在班上有这个:

private ArrayList<ArrayList> possibleNumbers = new ArrayList<ArrayList>();

然后我用空数组列表填充它,以确保每个y

中都有一些东西
for( int x = 0; x < grid[ y ].length; x++ )
{
    possibleNumbers.get( y ).add( x , new ArrayList<Integer>());
}

到目前为止,在我的代码中我有一个ArrayList,在变量'list'中有几个数字,设置列表为可能的数字:

possibleNumbers.get( y ).set( x, list );

稍后我尝试从插入的列表中获取值:

possibleNumbers.get( y ).get( x ).get( 0 );

但现在我收到了一个错误:

symbol  : method get(int)
location: class java.lang.Object
possibleNumbers.get( y ).get( x ).get(0);
                                 ^

我真的无法找到为什么第三次获取不起作用但第二种确实无效...我希望有人可以帮助我。

谢谢,

克里斯

3 个答案:

答案 0 :(得分:2)

我认为possibleNumbers的类型为ArrayList<ArrayList<Object>>。因此,从possibleNumbers.get( y ).get( x )返回的对象被视为Object。如果你施放它会发生什么?

答案 1 :(得分:2)

问题在于你试图将三个层次深入到两级结构中:

possibleNumbers.get( y ).get( x ).get( 0 )
  • possibleNumbersArrayList<ArrayList<Object>>
  • possibleNumbers.get(y)ArrayList<Object>
  • possibleNumbers.get(y).get(x)Object

您无法在get(0)上致电Object

答案 2 :(得分:0)

您有一个包含列表的列表:

possibleNumbers //ArrayList<ArrayList>

第一个获得将返回其中一个列表:

posibleNumbers.get(y) //-> ArrayList

第二次获取将获得该列表的一个条目:

possibleNumbers.get(y).get(x) //-> list entry

所以最后的get(0)太多了。