2011-11-14 56 views
1

我想在java中随机播放数组,但不改变原始列表,只刷新临时列表。在Java中随机播放数组

我写过这样的东西。

ArrayList<TristateCheckBox> tempList = buttons; 
Collections.shuffle(tempList); 

但是,这不洗牌只tempList也改变按钮列表。

回答

8

您需要获取列表的副本,而不仅仅是列表引用的副本。

List<TristateCheckBox> tempList = new ArrayList<TristateCheckBox>(buttons); 
Collections.shuffle(tempList); 
0

你只是将相同的buttons ArrayList实例分配给另一个变量。 tempList最终会引用相同的ArrayList。

试试这个:

List<TristateCheckBox> tempList = new ArrayList<TristateCheckBox>(buttons); 
Collections.shuffle(tempList); 

这ArrayList的构造服用另一种集将包括在新的列表给定collection的每个条目。不是条目的副本,只是在不同列表中的相同引用。