在JAVA中如果想打乱LIST的顺序可以调用Collections.shuffle()或者Collections.shuffle(List<?> list, Random rnd)方法。

Random rand = new Random();
Integer[] ia = {1,2,3,4,5,6,7,8,9,10};
List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));
System.out.println("list1打乱前的顺序:"+list1.toString());
Collections.shuffle(list1,rand);
System.out.println("list1打乱后的顺序:"+list1.toString());
System.out.println("原数组的顺序:"+Arrays.toString(ia));
得到的结果:

list1打乱前的顺序:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list1打乱后的顺序:[10, 5, 2, 9, 3, 1, 8, 7, 6, 4]
原数组的顺序:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

将上面的代码改一改:

List<Integer> list2 = Arrays.asList(ia);
System.out.println("list2打乱前的顺序:"+list2.toString());
Collections.shuffle(list2,rand);
System.out.println("list2打乱后的顺序:"+list2.toString());
System.out.println("原数组的顺序:"+Arrays.toString(ia));
得到的结果:

list2打乱前的顺序:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list2打乱后的顺序:[1, 10, 8, 6, 9, 4, 2, 7, 5, 3]
原数组的顺序:[1, 10, 8, 6, 9, 4, 2, 7, 5, 3]

对比一下,第二段代码将原数组的顺序也打乱了。第一段代码用了一个ArrayList将Arrays.asList()方法的结果包装起来,这将创建一个引用ia数组的元素的ArrayList。因此打乱这些引用不会修改数组。第二段代码直接使用 Arrays.asList()的结果,这种打乱会修改ia数组的顺序。ArrayList.asList()方法的产生的List会使用底层数组作为其物料实现。如果不想改变原数据的位置,那么就使用第一段代码的实现方式。

JAVA Collections.shuffle打乱列表的更多相关文章

  1. 你会用shuffle打乱列表吗?

    在网站上我们经常会看到关键字云(Word Cloud)和标签云(Tag Cloud),用于表明这个关键字或标签是经常被查阅的,而且还可以看到这些标签的动态运动,每次刷新都会有不一样的关键字或便签,让浏 ...

  2. java list随机打乱

    java list随机打乱package arrlist; import java.util.ArrayList; import java.util.Collections; import java. ...

  3. java Collection.shuffle()随机打乱一个顺序数组

    如何打乱一个顺序的数组,其实集合的帮助类Collection就有现成的方法可用,而且效率还蛮高的,总比自定义随机数等等方法要好很多.其实乱序就这么简单,步骤如下: 1. 将一个顺序排列的数组添加到集合 ...

  4. Collections.shuffle()源码分析

    Java.util.Collections类下有一个静态的shuffle()方法,如下: 1)static void shuffle(List<?> list)  使用默认随机源对列表进行 ...

  5. JAva Collections类方法详解

    http://blog.csdn.net/lskyne/article/details/8961014 Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素 ...

  6. 升序 Collections.sort(list) 降序 Collections.reserve(list) 随机 Collections.shuffle(list)

    package Day28ketangzuoye; import java.util.ArrayList; import java.util.Collections; import java.util ...

  7. 用斗地主的实例学会使用java Collections工具类

    目录 一.背景 二.概念 1.定义 2.方法 2.1.排序方法 2.2.查找/替换方法 三.斗地主实例 3.1.代码结构 3.2.常量定义 3.3.单只牌类 3.4.玩家类 3.5.主程序 四.深入理 ...

  8. [Java] Collections的简单运用

    package test.collections; import java.util.ArrayList; import java.util.Collection; import java.util. ...

  9. 关于Java Collections API您不知道的5件事,第2部分

    注意可变对象 java.util 中的 Collections 类旨在通过取代数组提高 Java 性能.如您在 第 1 部分 中了解到的,它们也是多变的,能够以各种方 式定制和扩展,帮助实现优质.简洁 ...

随机推荐

  1. css中伪类与伪元素的区别

    一:伪类:1:定义:css伪类用于向某些选择器添加特殊效果. 伪类其实与普通的css类相类似,可以为已有的元素添加样式,但是他只有处于dom无法描述的状态下才能为文档树中的元素添加样式,所以将其称为伪 ...

  2. ArrayList详细

    (IList值的集合 索引访问 ArrayList类IDictionary:键/值对 HashTable类 可变的集合 长度自动增长) ICollection-----IEnumerable--- I ...

  3. ssh -vT git@github.com get “ No such file or directory” 错误

    在"Are you sure you want to continue connnecting"的时候回复y,不要打空格跳过 参考:http://stackoverflow.com ...

  4. Oracle常用表和常见操作命令

    一.说明 Oracle数据库数据库名.表名.字段名等不区分大小写,字段值区分大小写. Oracle单词之间一般用下划线连接:表名最后一般加s字段名最后一般没s. 二.常见数据表 dba_*DBA拥有的 ...

  5. Mockito:一个强大的用于Java开发的模拟测试框架

    https://blog.csdn.net/zhoudaxia/article/details/33056093 介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用 ...

  6. summary_22rd Nov 2018

    一. 列表:记录同种属性的多个值 定义:在[]中用逗号分隔开多个任意的值 类型转换:L=list( )  括号中的内容必须是可迭代类型,包括字符串,列表,字典等 常用操作和内置方法: 1.按照索引位置 ...

  7. Uva LA 3902 - Network 树形DP 难度: 0

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  8. Standalone的更改方式

    1.更改Game视图中的Standalone分辨率 2.在unity中菜单栏中 File---->Build Settings(Ctrl+Shift+B)---->Player Setti ...

  9. 验证码 kaptcha 参数详解

    Constant 描述 默认值 kaptcha.border 图片边框,合法值:yes , no yes kaptcha.border.color 边框颜色,合法值: r,g,b (and optio ...

  10. CSS(一)属性--border边框

    HTML代码 <body> <div>举个例子</div> </body> CSS代码: div{ font-size:12px;  //字体大小,默认 ...