在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打乱列表的更多相关文章
-
你会用shuffle打乱列表吗?
在网站上我们经常会看到关键字云(Word Cloud)和标签云(Tag Cloud),用于表明这个关键字或标签是经常被查阅的,而且还可以看到这些标签的动态运动,每次刷新都会有不一样的关键字或便签,让浏 ...
-
java list随机打乱
java list随机打乱package arrlist; import java.util.ArrayList; import java.util.Collections; import java. ...
-
java Collection.shuffle()随机打乱一个顺序数组
如何打乱一个顺序的数组,其实集合的帮助类Collection就有现成的方法可用,而且效率还蛮高的,总比自定义随机数等等方法要好很多.其实乱序就这么简单,步骤如下: 1. 将一个顺序排列的数组添加到集合 ...
-
Collections.shuffle()源码分析
Java.util.Collections类下有一个静态的shuffle()方法,如下: 1)static void shuffle(List<?> list) 使用默认随机源对列表进行 ...
-
JAva Collections类方法详解
http://blog.csdn.net/lskyne/article/details/8961014 Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素 ...
-
升序 Collections.sort(list) 降序 Collections.reserve(list) 随机 Collections.shuffle(list)
package Day28ketangzuoye; import java.util.ArrayList; import java.util.Collections; import java.util ...
-
用斗地主的实例学会使用java Collections工具类
目录 一.背景 二.概念 1.定义 2.方法 2.1.排序方法 2.2.查找/替换方法 三.斗地主实例 3.1.代码结构 3.2.常量定义 3.3.单只牌类 3.4.玩家类 3.5.主程序 四.深入理 ...
-
[Java] Collections的简单运用
package test.collections; import java.util.ArrayList; import java.util.Collection; import java.util. ...
-
关于Java Collections API您不知道的5件事,第2部分
注意可变对象 java.util 中的 Collections 类旨在通过取代数组提高 Java 性能.如您在 第 1 部分 中了解到的,它们也是多变的,能够以各种方 式定制和扩展,帮助实现优质.简洁 ...
随机推荐
-
[WP8.1UI控件编程]SemanticZoom控件实现分组列表
11.1.5 SemanticZoom实现分组列表 SemanticZoom控件可以让用户实现一种更加高级的列表,这种列表可以对列表的项目进行分组,同时这个SemanticZoom控件会提供两个具有相 ...
-
javascript实现二分查找
今天做了道笔试题,要求是实现二分查找,当然不难,想了一下,因为没有要求语言就用javascript实现了.当然,期间还是出来了一点问题. ok,上代码 /* * 稳定二分查找 * 作者:吴伟欣 * * ...
-
[C程序设计语言]第三部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
-
c++ lower_bound upper_bound
lower_bound, first greater than or equal to upper_bound, first strickly greater
-
modbus ASCII和MODBUS RTU区别
下表是MODBUS ASCII协议和RTU协议的比较: 协议 开始标记 结束标记 校验 传输效率 程序处理 ASCII :(冒号) CR,LF LRC 低 直观,简单,易调试 RTU 无 无 CRC ...
-
Oracle数据库的非归档模式迁移到归档模式
先观察当前的状态: [root@o_target ~]# su - oracle [oracle@o_target ~]$ sqlplus / as sysdba SQL*Plus ...
-
ROS naviagtion analysis: costmap_2d--ObstacleLayer
博客转载自:https://blog.csdn.net/u013158492/article/details/50493676 构造函数 ObstacleLayer() { costmap_ = NU ...
-
Codeforces 336C 0-1背包
题意:每个水果有两个值,一个美味度 a,一个卡路里 b,从中挑选一些,要求 sum(aj) / sum(bj) = k,使得 sum(a) 最大. 分析:没有那个条件就是一个01背包,可以转换,对公式 ...
-
EF使用报错说缺少引用
在程序中已经引用了EF,也引用了System.Data,但是一起报这个错误: 在类前面也已经写了 using System.Data.Entity,百思不得其解,最后才发 ...
-
PAT——甲级1042:Shuffling Mashine
终于做到甲级了 就一个感觉....题目是真的看不懂,亏我还是四六级都过了的人....可是看完题愣是一点都不懂是什么意思. 1042 Shuffling Machine (20 point(s)) Sh ...