2014-06-11 32 views
-3

我有以下的代碼行:如何通過一個ArrayList訪問結構中的Java

private ArrayList<wordClass>[] words; 

public class wordClass { 
    public String wordValue = null; 
    public int val = 0; 
    public boolean used = false; 
} 

反正我有可以訪問通過的話wordValueval,和used?喜歡words[5].val?我知道我可以做到這一點,如果他們只是在wordClass的數組中,但我想要一個動態數組,使其更容易從數組中加減。我知道值應該是private。只是不想編寫getter和setter。

謝謝。

+0

那麼,他們是公共... - 順便說一句,檢查什麼標籤是,和你的術語,使用它們之前。 – ChiefTwoPencils

回答

1

你真的想要一個ArrayList的數組嗎? 這似乎不正確。

Array s中,您使用[]來訪問(words[0])。 在ArrayList s,您應該使用words.get(0)。 你已經編碼的方式,你應該使用:words[0].get(0).val來獲得第一個值。

但我建議您查看您的words定義。

ArrayList的文檔:http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

問候, 布魯諾

+0

謝謝。沒有利用「得到」。我會在9分鐘內接受你的回答。 –

0

你的代碼是有點過了動態數組(Java有不可變的數組),所以你需要一個ArrayList。此外,Java使用大寫字母類名(請遵循約定) -

// like this, changing wordClass to WordClass. Also, using the diamond operator 
private ArrayList<WordClass> words = new ArrayList<>(); 

要訪問您的WordClass字段,你可以使用類似 -

for (WordClass wc : words) { 
    if (wc.used) { 
    System.out.println(wc.wordValue + " = " + wc.val); 
    } 
} 

注意,您還需要創建WordClass實例並將它們放入單詞List

0

爲每個值編寫包裝類。例如你稱之爲「獲得者」。

然後調用:

words[1].getWordValue() ==> None 

+2

你打破了Java命名約定。 – ChiefTwoPencils

+0

我一直在使用蛇殼來工作,所以我忘記了正確的外殼。我的錯。 – swsmith

相關問題