Java集合的使用保存一副扑克牌并洗牌输出

        学习集合后发现集合比数组要灵活多了,不固定长度可以实时添加删除。实现洗牌的原理很简单,我这里用到了随机数,但是怎么能让随机内容布重复呢?我创建个A集合,把扑克元素全存进去,然后随机它,随机出一个元素就把这个元素从A中删除,添加到创建的B集合中,然后继续随机A不断循环,这样就能使随机内容不重复了。输出效果界面如下,由于没用换号太长就截取了一部分,如果有更好的思路请指出:


import java.util.ArrayList;
import java.util.Random;

public class test5 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        String name = "";
        for (int i = 1; i <= 13; i++) {     //保存一副扑克到集合
            switch (i) {
                case 1:
                    name = "A";
                    break;
                case 11:
                    name = "J";
                    break;
                case 12:
                    name = "Q";
                    break;
                case 13:
                    name = "K";
                    break;
                default:
                    name = String.valueOf(i);
                    break;
            }
            list.add("♡" + name);
            list.add("♦" + name);
            list.add("♠" + name);
            list.add("♣" + name);
        }
        list.add("大\uD83D\uDC7B");
        list.add("小\uD83D\uDC7B");
        poker(list);
    }
    public static void poker(ArrayList list) {
        Random r = new Random();
        ArrayList reList = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            int p = r.nextInt(list.size());       //随机扑克
            reList.add(list.get(p));
            list.remove(p);     //将随机出来的扑克删除,此时list 数目少1
            i--;    //以上条件下i++一直运行会少掉几乎一半元素,来个i--抵消
        }
        for (int i = 0; i < reList.size(); i++) {
            System.out.print(reList.get(i) + " ");  //输出随机排序的扑克牌
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值