collections.shuffle
java中Collections类的shuffle()方法的作用是将List中的内容随机打乱顺序。
- importjava.util.ArrayList;
- importjava.util.Collections;
- importjava.util.HashSet;
- importjava.util.List;
- importjava.util.Random;
- /*
- *Createdon2015年12月23日
- *Copyright2015YongCailimitedcrop.AllRightsReserved
- *
- */
- publicclassCollectionShuffle{
- publicstaticvoidmain(String[]args){
- List<integer>li=newArrayList<Integer>();
- HashSet<Integer>set=newHashSet<Integer>();
- for(inti=0;i<10;i++){
- li.add(i);
- }
- System.out.println(li.toString());
- Randomrnd=newRandom(2);//给定随机种子
- for(intj=1;j<=3;j++){
- collections.shuffle(li);
- System.out.println(li.toString());
- Collections.shuffle(li,rnd);
- System.out.println(”addrnd:”+li.toString());
- }
- }
- }
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
/*
*Created on 2015年12月23日
*Copyright 2015 Yong Cai Limited crop. All Rights Reserved
*
*/
public class CollectionShuffle {
public static void main(String[] args) {
List<Integer> li = new ArrayList<Integer>();
HashSet<Integer> set = new HashSet<Integer>();
for(int i=0;i < 10;i++){
li.add(i);
}
System.out.println(li.toString());
Random rnd = new Random(2);//给定随机种子
for(int j=1;j <= 3;j++){
Collections.shuffle(li);
System.out.println(li.toString());
Collections.shuffle(li, rnd);
System.out.println("add rnd:"+li.toString());
}
}
}
输出结果:
[java] view plain copy print?
- [0,1,2,3,4,5,6,7,8,9]
- [7,3,8,4,0,5,1,2,9,6]
- addrnd:[8,3,6,5,7,4,0,2,1,9]
- [2,3,8,9,7,6,5,0,1,4]
- addrnd:[4,6,3,0,7,5,2,9,8,1]
- [9,2,8,7,0,5,3,6,1,4]
- addrnd:[2,0,6,7,8,3,5,4,1,9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[7, 3, 8, 4, 0, 5, 1, 2, 9, 6]
add rnd:[8, 3, 6, 5, 7, 4, 0, 2, 1, 9]
[2, 3, 8, 9, 7, 6, 5, 0, 1, 4]
add rnd:[4, 6, 3, 0, 7, 5, 2, 9, 8, 1]
[9, 2, 8, 7, 0, 5, 3, 6, 1, 4]
add rnd:[2, 0, 6, 7, 8, 3, 5, 4, 1, 9]
shuffle()方法的源代码如下:
[java] view plain copy print?
- publicstaticvoidshuffle(List<?>list){
- if(r==null){
- r=newRandom();
- }
- shuffle(list,r);
- }
- privatestaticRandomr;
- publicstaticvoidshuffle(List<?>list,Randomrnd){
- intsize=list.size();
- if(size<SHUFFLE_threshold||listinstanceofRandomAccess){
- for(inti=size;i>1;i–)
- swap(list,i-1,rnd.nextint(i));
- }else{
- Objectarr[]=list.toArray();
- //Shufflearray
- for(inti=size;i>1;i–)
- swap(arr,i-1,rnd.nextInt(i));
- //Dumparraybackintolist
- ListIteratorit=list.listIterator();
- for(inti=0;i<arr.length;i++){
- it.next();
- it.set(arr[i]);
- }
- }
- }
public static void shuffle(List<?> list) {
if (r == null) {
r = new Random();
}
shuffle(list, r);
}
private static Random r;
public static void shuffle(List<?> list, Random rnd) {
int size = list.size();
if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) {
for (int i=size; i>1; i--)
swap(list, i-1, rnd.nextInt(i));
} else {
Object arr[] = list.toArray();
// Shuffle array
for (int i=size; i>1; i--)
swap(arr, i-1, rnd.nextInt(i));
// Dump array back into list
ListIterator it = list.listIterator();
for (int i=0; i<arr.length; i++) {
it.next();
it.set(arr[i]);
}
}
}
转载自http://blog.csdn.net/caiandyong/article/details/50389741
相关阅读
视频去水印方法总结 从素材网站下载的视频大多都留有水印,使用这些视频对使用者有较大干扰,很不方便,需要运用一定的方法尽可能去掉
微信怎么恢复聊天记录?现在微信日活跃用户趋近10亿,超过50%用户每天使用时长超过90分钟,可以说是微信构建了我们的社交圈,生活中我们
Oracle数据库的Row_number() over()使用方法
1.原始数据(部分)SELECT * FROM SCOTT.EMP ; 2.使用Row_number() over() 函数,排序SELECT EMPNO,ENAME,SAL,DEPTNO,Row_number()
iconfont字体图标的使用方法--超简单!这里讲解的默认是元素使用类名;step 1:百度iconfont,找到阿里巴巴矢量图标库官网,然后注册
当系统提供的控件,无法满足我们的需求的时候,我们往往会 想到自定义控件,通过继承View来实现。当我们想像 系统提供的控件那样可以如