记录一下Java基础中集合的小案例 —–发扑克

三人斗地主,使用集合实现发牌洗牌


Poker类

public class Poker {
    String[] color = {"♦", "♥", "♣", "♠"};
    String[] numberPoker = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
    ArrayList<String> arrayList = new ArrayList();
    ArrayList<String> bottom = new ArrayList();
    ArrayList<Player> player = new ArrayList();

    public Poker(ArrayList<Player> player) {
        this.player = player;
        this.start();
        this.washPoker();
        this.sendPoker();
    }

    public void start() {
        for (int i = 0; i < color.length; i++) {
            for (int j = 0; j < numberPoker.length; j++) {
                arrayList.add(color[i] + numberPoker[j]);
            }
        }
        arrayList.add("King");
        arrayList.add("Queen");
    }

    public void washPoker() {
        Collections.shuffle(arrayList);
    }

    public void sendPoker() {
        for (int i = 0; i < arrayList.size(); i++) {
            if (i < 3) {
                bottom.add(arrayList.get(i));
            } else {
                player.get(i % 3).setPoker(arrayList.get(i));
            }
        }
    }

    public void watchPoker() {
        System.out.print("底牌:");
        System.out.println(bottom);
        for (int i = 0; i < player.size(); i++) {
            System.out.println(player.get(i));
        }
    }
}

Player类

public class Player {
    private String name;
    private String sex;

    ArrayList<String> poker = new ArrayList();

    public Player(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }
    
    public void setPoker(String s) {
        poker.add(s);
    }

    @Override
    public String toString() {
        return "Player{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", arrayList=" + poker +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        Player player1 = new Player("科一","男");
        Player player2 = new Player("周星驰","男");
        Player player3 = new Player("周润发","男");
        ArrayList<Player> arrayList = new ArrayList<>();
        arrayList.add(player1);
        arrayList.add(player2);
        arrayList.add(player3);
        Poker poker = new Poker(arrayList);
        poker.watchPoker();
    }
}

输出结果

底牌:[♣8, ♣J, ♠8]
Player{name='科一', sex='男', arrayList=[♣10, ♥9, ♦Q, ♥2, ♣Q, ♦5, ♣4, ♥3, ♦J, ♣5, ♦8, ♠9, ♥10, ♠6, ♠J, ♦4, ♥8]}
Player{name='周星驰', sex='男', arrayList=[♥4, ♠A, ♠7, ♠K, ♣K, ♣9, ♦3, ♥K, King, ♣3, Queen, ♦A, ♣A, ♦9, ♣6, ♠4, ♥6]}
Player{name='周润发', sex='男', arrayList=[♠2, ♥J, ♠10, ♥7, ♥Q, ♣7, ♦K, ♦10, ♥A, ♣2, ♥5, ♠5, ♦6, ♠3, ♠Q, ♦7, ♦2]}
底牌:[♠9, ♥8, ♠4]
Player{name='科一', sex='男', arrayList=[♠J, ♣K, Queen, ♠6, ♥Q, ♠3, ♥7, ♦A, ♥K, ♠K, ♥3, ♥6, ♥9, ♠7, ♦J, ♦3, ♠Q]}
Player{name='周星驰', sex='男', arrayList=[♦10, ♣10, ♥5, ♦8, ♣6, ♥J, ♣Q, ♦K, ♥4, ♣7, ♦Q, ♠10, ♣J, ♣2, ♠A, ♣8, ♣A]}
Player{name='周润发', sex='男', arrayList=[♦6, ♦4, ♠5, ♦9, ♦5, ♥A, ♦2, ♣4, ♥10, ♣9, ♥2, ♦7, ♣3, ♠2, King, ♠8, ♣5]}