Collections.shuffle() 洗牌方法 应用于简易发扑克牌程序

Java中 Collections.shuffle()
顾名思义,shuffle是洗牌的意思,所以这个方法的作用是将list中的循序打乱,参数放入List


Collections.shuffle() 洗牌方法 应用于简易发扑克牌程序_第1张图片
函数源代码

一个简单的例子:

@Test
    private void test1(){
        ArrayList num=new ArrayList();
        num.add("A");num.add("2");num.add("3");num.add("4");num.add("5");num.add("6");num.add("7");num.add("8");num.add("9");num.add("10");
        num.add("J");num.add("Q");num.add("K");

        System.out.println(num);
        Collections.shuffle(num);
        System.out.println(num);
    }

Arraylist是list一个实现类,所以也可以用shuffle
打印前后对比


结果

上面一行是arraylist中依次放入的顺序,下面是洗牌后的顺序

这样可以做一个常用的面试题了:发扑克牌
玩过扑克的都知道,玩扑克的一些顺序,首先要有牌,然后洗牌,然后打乱了后发到所有人手里,每个人牌数一样,这些都是需要注意的特点。

首先要创造出52张牌(去掉了大小王),这里通过利用两个list(点数和花式)循环创建一个所有牌的list,然后shuffle一下,最后return card,拿到的牌就是打乱的了。

 //创建牌
    private ArrayList Card(){
        //点数
        ArrayList num=new ArrayList();
        num.add("A");num.add("2");num.add("3");num.add("4");num.add("5");num.add("6");num.add("7");num.add("8");num.add("9");num.add("10");
        num.add("J");num.add("Q");num.add("K");
        //花式
        ArrayList color=new ArrayList();
        color.add("黑桃");color.add("红桃");color.add("方片");color.add("草花");
        //所有牌
        ArrayList card=new ArrayList();
        for (int i=0;i

然后是发牌方法,定义了发牌人数(写死为4个人),每个人能发到的牌数(循环用)
通过双循环打印出来效果
j的循环是通过i值的变换而变换,当i是1,j就从0循环到12,然后i=2,j=13-25....

@Test
    //发牌
    private void Deal(){
        //人数
        int pnum=4;
        //每人能发到的牌数
        int numperp=52/pnum;
        for (int i=1;i<=pnum;i++){
            System.out.println("第"+i+"人拿到的:");
            //根据i来控制j的初始值
            for (int j=(numperp)*(i-1);j

结果如下


Collections.shuffle() 洗牌方法 应用于简易发扑克牌程序_第2张图片
结果

你可能感兴趣的:(Collections.shuffle() 洗牌方法 应用于简易发扑克牌程序)