我想在java中随机播放数组,但不改变原始列表,只刷新临时列表。在Java中随机播放数组
我写过这样的东西。
ArrayList<TristateCheckBox> tempList = buttons;
Collections.shuffle(tempList);
但是,这不洗牌只tempList也改变按钮列表。
我想在java中随机播放数组,但不改变原始列表,只刷新临时列表。在Java中随机播放数组
我写过这样的东西。
ArrayList<TristateCheckBox> tempList = buttons;
Collections.shuffle(tempList);
但是,这不洗牌只tempList也改变按钮列表。
您需要获取列表的副本,而不仅仅是列表引用的副本。
List<TristateCheckBox> tempList = new ArrayList<TristateCheckBox>(buttons);
Collections.shuffle(tempList);
tempList是一个指向按钮对象的指针。 tempList和按钮指向内存中的相同位置。您必须实际复制数据以维护原始列表中的订单。查看阵列:http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html了解复制阵列的方法。
你只是将相同的buttons
ArrayList实例分配给另一个变量。 tempList
最终会引用相同的ArrayList。
试试这个:
List<TristateCheckBox> tempList = new ArrayList<TristateCheckBox>(buttons);
Collections.shuffle(tempList);
这ArrayList的构造服用另一种集将包括在新的列表给定collection的每个条目。不是条目的副本,只是在不同列表中的相同引用。