2014-09-25 51 views
0

我剛剛在我的學校開始使用java,並且我遇到了一些問題。那麼不是一個真正的問題,因爲我找到了解決方法(雖然複雜)。從java中的多個arrayLists獲取值

我應該做一個poemgenerator。

因此,在一個for循環中,我想要構建一個字符串,在某些arrayLists中,所以即時使用StringBuilder。

的事情是,我的句子應該由字從4周不同的ArrayList,(不同wordclasses)

和前一陣子,我編程的ActionScript3,並有東西存在,我可以真正使用這個問題會使代碼變得更簡單。使用此[]

所以。我有4名列表:列表0,列表1,列表2,項目list3

,並在我的循環,我就做了類似的在AS3以下(閃光,ActionScript3的)

for(int i = 0; i<4; i++){ 
    poem.append(This["list" + i].get(randomindex)) 
} 

以便第一時間循環去,我從list0得到一個隨機單詞,第二次,我從list1得到一個隨機單詞,等等... 有沒有什麼辦法可以在java中做到這一點? x)的

回答

3

可以使用陣列;

List<String> list1 = Arrays.asList("String1", "String2"); 
List<String> list2 = Arrays.asList("String3", "String4"); 
List<String> list3 = Arrays.asList("String5", "String6"); 
List<String> list3 = Arrays.asList("String7", "String8"); 
List<String>[] lists = new List[]{ list1, list2, list3, list4}; 

然後用

for(int i = 0; i<4; i++){ 
    poem.append(lists[i].get(randomindex)); 
} 
+0

我似乎無法做到這一點,但我確定我做錯了什麼......正如我所說,即時通訊相當新的Java x) 我應該改變我的單詞列表:list0,list1等等,而不是數組?或者我可以保持它們爲ArrayLists? – 2014-09-25 14:24:55

+0

據我瞭解,我需要這樣做: 列表 []列表=新列表 [] {list0,list1,list2,list3}; 但後來我得到的錯誤:無法創建一個名單的通用數組 2014-09-25 15:00:26

+0

@KetilGustavsen我編輯我的答案。 – talex 2014-09-25 15:04:15

0

可以使用二維陣列see here

list[0] = {"firstWordA","firstWordB"}; 
list[1] = {"secondWordA","secondWordB"}; 
list[2] = {"thirdWordA","thirdWordB"}; 
list[3] = {"fourthWordA","fourthWordB"}; 

for(int i = 0; i<4; i++){ 
    poem.append(list[i][randomindex]) 
} 
+0

這會行得通,但Talex的解決方案更好地處理OP的問題,因爲將List的組合,而不是陣列。 – 2014-09-25 13:55:12

+0

噢,沒有看到。 – Robert 2014-09-25 13:58:27

1

取代你的代碼做一個fullList : List<List<String>>包含您list0-3

Random r = new Random(); 
StringBuildr poem = new StringBuilder(); 
for (List<String> list : fullList) 
    poem.append(list.get(r.nextInt(list.size()))); 

poem.toString(); //this is your poem 

代碼不寫在IDE,也不測試。