2017-03-04 32 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類的包外部訪問。但是,在這裏似乎已經是這種情況了......