java list随机打乱

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

}
时间: 2024-10-11 18:30:25

java list随机打乱的相关文章

随机打乱数组元素

把数组内的元素随机打乱,重新进行排列  C#版: 1 public static void Shuffle<T>(T[] array) 2 { 3 Random random = new Random(); 4 5 for (int i = 0; i < 10; i++) 6 { 7 int idx = random.Next(i, 10); 8 9 //swap elements 10 T tmp = array[i]; 11 array[i] = array[idx]; 12 arr

php保留键随机打乱数组顺序

最近遇到一个需求,把一个数组随机打乱顺序,我们可以用php的shuffle函数,但是这个函数会把数组的键清空建立新的键,那么我们若想保留键只需要利用shuffle函数再做一下处理就可以了.可以自定义一个函数. <?php function retain_key_shuffle(array &$arr){ if (!empty($arr)) { $key = array_keys($arr); shuffle($key); foreach ($key as $value) { $arr2[$v

java生成随机整数

1. 使用Random类的nextInt方法: Random rand = new Random(); rand.nextInt(max);, 此时输出[0,max),注意右边是开区间,如果需要设定最小值可通过 rand.nextInt(max-min+1)+min方式,此时的范围为[min,max] import java.util.Random; public class RandomNumber { public static void main(String[] args) { Rand

随机打乱一组数据(算法)

最近一个项目的开发中遇到一个需求,有一组数1,2,3,4,5,6,7,8,0. 哈哈,如何将它随机打乱生成一个0-8的任意排列呢?比如生成0.6.1.2.3.4.5.7.8等等. 算法思路: 1.使用Arraylist存放这组数 2.随机生成Arraylist的下标值,根据下标值依次取出Arraylist值,直到Arraylist为空 哈哈,是不是很简单.......... 下面看代码: private static void genRandomData() { int data[] = { 1

简单说说随机打乱数组的方法

原文链接:http://www.gbtags.com/gb/share/5646.htm 把一个数组随机打乱这个需求来源可能就是“洗牌”,所以我们常常称之为洗牌问题.这个问题实现并不复杂,有不少方法可以完成.与其他算法不同,洗牌问题不仅追求速度,还要求“洗得足够开”.今天只想写篇短的,只分享两种比较有代码性的洗牌方法.至于这些方法能不能真正将数组随机打乱,我们下次再讲. 方法一,随机排序法: function shuffle(array) { array.sort(function() { re

Python 实现随机打乱字符串

# 随机打乱字符串 # import random def shuffle_str(str=''): l = list(str) # 将字符串转换成列表 random.shuffle(l) # 调用random模块的shuffle函数 return ''.join(l) # 列表转字符串 for i in range(5): print(shuffle_str('hello world!')) 输出结果: leo hdlrlow! oolrh lelw!d !lwrholol de wll er

java获取随机时间的源码片段

将写内容过程中重要的一些内容做个记录,如下资料是关于java获取随机时间的片段的内容. import java.text.parseexception; import java.text.simpledateformat; import java.util.date; public class getrandomtiem { public static void main(string []args){ simpledateformat format = new simpledateformat

在java中随机生成一个无序且长度不大于10的字符串

package xiangmu; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class TestCollection { /* * 通过定义Collections.sort()方法对String泛型进行List排序 * 创建一个String泛型List,插入一个不超过10的随机字符串 */ /** * @param

java生成随机验证图片的实现

package com.fxr.生成随机图片; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; public class M