Collections.shuffle()方法实例解析
本文研究的主要是Collections.shuffle()方法的相关内容,下面看看具体内容。
Java.util.Collections类下有一个静态的shuffle()方法,如下:
1)staticvoidshuffle(List>list)使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的。
2)staticvoidshuffle(List>list,Randomrand)使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的。
通俗一点的说,就像洗牌一样,随机打乱原来的顺序。
注意:如果给定一个整型数组,用Arrays.asList()方法将其转化为一个集合类,有两种途径:
1)用List
2)用List
packageahu; importjava.util.*; publicclassModify{ publicstaticvoidmain(String[]args){ Randomrand=newRandom(47); Integer[]ia={0,1,2,3,4,5,6,7,8,9}; Listlist=newArrayList (Arrays.asList(ia)); System.out.println("Beforeshufflig:"+list); Collections.shuffle(list,rand); System.out.println("Aftershuffling:"+list); System.out.println("array:"+Arrays.toString(ia)); List list1=Arrays.asList(ia); System.out.println("Beforeshuffling:"+list1); Collections.shuffle(list1,rand); System.out.println("Aftershuffling:"+list1); System.out.println("array:"+Arrays.toString(ia)); } }
运行结果如下:
Beforeshufflig:[0,1,2,3,4,5,6,7,8,9] Aftershuffling:[3,5,2,0,7,6,1,4,9,8] array:[0,1,2,3,4,5,6,7,8,9] Beforeshuffling:[0,1,2,3,4,5,6,7,8,9] Aftershuffling:[8,0,5,2,6,1,4,9,3,7] array:[8,0,5,2,6,1,4,9,3,7]
在第一种情况中,Arrays.asList()的输出被传递给了ArrayList()的构造器,这将创建一个引用ia的元素的ArrayList,因此打乱这些引用不会修改该数组。但是,如果直接使用Arrays.asList(ia)的结果,这种打乱就会修改ia的顺序。意识到Arrays.asList()产生的List对象会使用底层数组作为其物理实现是很重要的。只要你执行的操作会修改这个List,并且你不想原来的数组被修改,那么你就应该在另一个容器中创建一个副本。
总结
以上就是本文关于Collections.shuffle()方法实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。