2017-03-04 31 views
3

我无法访问多个ArrayList元素。代码如下所示,它不能访问值5或6.我的IDE不接受我的代码的最后一条语句,即System.out.println(specification.get(0).get(0).value);如何获取数组列表中的对象元素ArrayList在java中访问多个ArrayList对象的元素

class Node { 

    int value; 
    boolean explored; 

    Node(int v) { 
     value = v; 
     explored = false; 
    } 

    int getValue() { 
     return value; 
    } 
} 

class Board { 

    ArrayList<ArrayList> specification; 
    ArrayList<Node> speci_node; 

    Board() { 
     speci_node = new ArrayList<Node>(1); 
     speci_node.add(new Node(5)); 
     speci_node.add(new Node(6)); 

     specification = new ArrayList<ArrayList>(1); 
     specification.add(speci_node); 
     System.out.print(specification.get(0).get(0).value); // variable 'value' is not found error.... 
    } 
} 
+1

你正在得到什么错误? –

+0

IDE不接受最后一条语句。这是说变量“价值”没有被发现 –

+0

这两个类都在同一个文件?或者他们在不同的文件中,也可能是不同的包? – dpr

回答

1

你应该投你的元素是这样的:

System.out.print(((Node) specification.get(0).get(0)).value); 
//-----------------|-^^^-|----------------------------------- 

这将返回5

+0

它的工作:)谢谢 –

+0

欢迎您@AyazKhan –

+0

有没有必要,如果你正确地声明泛型类型 –

3

虽然@ YCF_L的答案是正确的,你还可指定泛型类型内ArrayList的以避免演员阵容:

specification = new ArrayList<ArrayList<Node>>(1); 

Furt此外,NodeBoard类需要位于同一个包中,因为value成员是私有包,因此无法在Node类的包外部访问。但是,在这里似乎已经是这种情况了......