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);
    }

}

猜你喜欢

转载自blog.csdn.net/yulei2008_/article/details/118787113