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

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


函数源代码

一个简单的例子:

@Test
    private void test1(){
        ArrayList<String> num=new ArrayList<String>();
        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<String> num=new ArrayList<String>();
        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<String> color=new ArrayList<String>();
        color.add("黑桃");color.add("红桃");color.add("方片");color.add("草花");
        //所有牌
        ArrayList<String> card=new ArrayList<String>();
        for (int i=0;i<color.size();i++){
            for (int j=0;j<num.size();j++)
            {
                card.add(color.get(i)+num.get(j));
            }
        }
        //洗牌
        Collections.shuffle(card);
        return card;
    }

然后是发牌方法,定义了发牌人数(写死为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<numperp*i;j++){
                System.out.print(Card().get(j)+"、");
            }
            System.out.println();

        }
    }

结果如下


结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容