2014-09-25 75 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,也不测试。