Collection体系综合案例---斗地主,实现洗牌,发牌,牌排序

这个程序创建了一个扑克牌集合,并使用静态代码块初始化。它通过遍历大小和花色组合来生成每张牌,然后洗牌并分配给三个玩家。每个玩家获得等量的牌,最后打印出每个玩家的牌以及最后三张牌。程序还包含一个自定义比较器用于按牌的索引值降序排列。
摘要由CSDN通过智能技术生成
package com.collection;

import java.util.*;

public class CardDemo {
    //静态成员变量属于类,随类一起加载
    public static List<Card> cards = new ArrayList<>();

    //静态代码块和类一起加载
    static {
        String[] sizes = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
        String[] colors = {"♥", "♦", "♠", "♣"};
        int index=0;
        for (String size : sizes) {
            index++;
            for (String color : colors) {
                Card card = new Card(size, color,index);
                cards.add(card);
            }
        }
        Card card1 = new Card("", "大🃏",++index);
        Card card2 = new Card("", "小🃏",++index);
        Collections.addAll(cards, card1, card2);
        System.out.println(cards);
    }

    public static void main(String[] args) {
        //洗牌
        Collections.shuffle(cards);
        System.out.println(cards);

        List<Card> person1 = new ArrayList<>();
        List<Card> person2 = new ArrayList<>();
        List<Card> person3 = new ArrayList<>();
        for (int i = 0; i < cards.size(); i++) {
            Card card = cards.get(i);
            if (i % 3 == 0) {
                person1.add(card);
            } else if (i % 3 == 1) {
                person2.add(card);
            } else if (i % 3 == 2) {
                person3.add(card);
            }
        }

        sortCard(person1);
        sortCard(person2);
        sortCard(person3);

        List<Card> lastThreeCards = CardDemo.cards.subList(CardDemo.cards.size() - 3, CardDemo.cards.size());
        System.out.println("person1:"+person1);
        System.out.println("person2:"+person2);
        System.out.println("person3:"+person3);
        System.out.println("lastThreeCards:"+lastThreeCards);

    }

    private static void sortCard(List<Card> person1) {
        Collections.sort(person1, new Comparator<Card>() {
            @Override
            public int compare(Card o1, Card o2) {

                return o2.getIndex()-o1.getIndex();
            }
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值