Java.util.Collections类下有一个静态的shuffle()方法,如下:
1)static void shuffle(List<?> list) 使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的。
2)static void shuffle(List<?> list, Random rand) 使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的。
通俗一点的说,就像洗牌一样,随机打乱原来的顺序。
注意:如果给定一个整型数组,用Arrays.asList()方法将其转化为一个集合类,有两种途径:
1)用List<Integer> list=ArrayList(Arrays.asList(ia)),用shuffle()打乱不会改变底层数组的顺序。
2)用List<Integer> list=Arrays.aslist(ia),然后用shuffle()打乱会改变底层数组的顺序。代码例子如下:
package com.item.test; import java.util.*; public class T1 { public static void main(String[] args){ Random rand=new Random(54); Integer[] ia={0,1,2,3,4,5,6,7,8,9}; List<Integer> list=new ArrayList<Integer>(Arrays.asList(ia)); System.out.println("前 shufflig: "+list); Collections.shuffle(list,rand); System.out.println("后 shuffling: "+list); System.out.println("数组: "+Arrays.toString(ia)); List<Integer> list1=Arrays.asList(ia); System.out.println("前 shuffling: "+list1); Collections.shuffle(list1,rand); System.out.println("后 shuffling: "+list1); System.out.println("数组: "+Arrays.toString(ia)); } }
效果:
所以接上一篇文章:【Java扑克牌(enum)】
package com.item.test; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; public class Action { public static void main(String[] args) { //随机卡牌 List<Card> list=ResetCard(StartCard()); int i=0; for (Card c:list) { if(i%3==0){ System.out.println(); } System.out.print(c.getIndex()+":"+c.getName()+"\t"); i++; } } /** * 随机排序 * @param list * @return */ public static List<Card> ResetCard(List<Card> list){ Collections.shuffle(list); return list; } /** * 初始化卡牌 * @return */ public static List<Card> StartCard(){ List<Card> list=new ArrayList<>(54); int i=0; for (CardsEnum cardsEnum:CardsEnum.values()) { for (CardColorEnum cardColorEnum:CardColorEnum.values()) { list.add(new Card(cardsEnum,cardColorEnum,i++)); } } Card big=new Card(); big.setName(CardBossEnum.BIG.getName()); big.setIndex(i++); Card small=new Card(); small.setName(CardBossEnum.SMALL.getName()); small.setIndex(i++); list.add(big); list.add(small); return list; } }
效果如下:
上篇文章地址:【https://blog.csdn.net/feng8403000/article/details/114792614】