java list隨機打亂
package arrlist;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
/**
* 打亂列表中數據元素的三種實現方法
*
* @author Alexia
* @date 2013-7-16
*
*/
public class ShuffleTest {
// 打亂列表實現方法1
public <T> void shuffle1(List<T> list) {
int size = list.size();
Random random = new Random();
for(int i = 0; i < size; i++) {
// 獲取隨機位置
int randomPos = random.nextInt(size);
// 當前元素與隨機元素交換
T temp = list.get(i);
list.set(i, list.get(randomPos));
list.set(randomPos, temp);
}
}
// 打亂列表實現方法2
public <T> void shuffle2(List<T> list) {
int size = list.size();
Random random = new Random();
for(int i = 0; i < size; i++) {
// 獲取隨機位置
int randomPos = random.nextInt(size);
// 當前元素與隨機元素交換
Collections.swap(list, i, randomPos);
}
}
// 打亂列表實現方法3
public <T> void shuffle3(List<T> list) {
// 打亂順序
Collections.shuffle(list);
}
// 打印列表
public <T> void print(List<T> list) {
for(T t : list) {
System.out.print(t + " ");
}
System.out.println("\n");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ShuffleTest st = new ShuffleTest();
List<String> tagClouds = new ArrayList<String>(6);
// 通常從數據庫中讀取,這裏僅以測試爲目的
tagClouds.add("計算機");
tagClouds.add("Java");
tagClouds.add("編程");
tagClouds.add("C/C++");
tagClouds.add("操做系統");
tagClouds.add("數據庫");
System.out.println("原順序:");
st.print(tagClouds);
st.shuffle1(tagClouds);
System.out.println("打亂順序一:");
st.print(tagClouds);
st.shuffle2(tagClouds);
System.out.println("打亂順序二:");
st.print(tagClouds);
st.shuffle3(tagClouds);
System.out.println("打亂順序三:");
st.print(tagClouds);
}
}