好玩的扑克发牌器 Collections.sort()的妙用

import java.util.ArrayList;
import java.util.Collections;


public class DouDiZhuDemo {
    public static void main(String[] args) {
        //准备牌
        String[] flowers = {"♠", "♥", "♣", "♦"};
        String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
        //组合
        ArrayList<String> box = new ArrayList<>();
        for (String flower : flowers) {
            for (String number : numbers) {
                String poke = flower + number;
                box.add(poke);
            }
        }
        box.add("joker");
        box.add("JOKER");
        box.add("赖子");
        //System.out.println("box = " + box);
        //洗牌 Collections工具类中 傻否 shuffle
        Collections.shuffle(box);

        //发牌
        //准备四个牌搭子
        ArrayList<String> 地主牌 = new ArrayList<>();
        ArrayList<String> 周润发 = new ArrayList<>();
        ArrayList<String> 周星驰 = new ArrayList<>();
        ArrayList<String> 刘德华 = new ArrayList<>();
        //率先发四张地主牌
        地主牌.add(box.get(box.size() - 1));
        地主牌.add(box.get(box.size() - 2));
        地主牌.add(box.get(box.size() - 3));
        地主牌.add(box.get(box.size() - 4));

        for (int i = 0; i < box.size() - 4; i++) {
            if (i % 3 == 0) {
                周润发.add(box.get(i));
            }
            if (i % 3 == 1) {
                周星驰.add(box.get(i));
            }
            if (i % 3 == 2) {
                刘德华.add(box.get(i));
            }
        }
        //排序类 OrderDemo
        OrderDemo od = new OrderDemo();

        //排序
        Collections.sort(周润发, od);
        Collections.sort(周星驰, od);
        Collections.sort(刘德华, od);
        Collections.sort(地主牌, od);

        //看牌
        System.out.println("周润发 = " + 周润发);
        System.out.println("周星驰 = " + 周星驰);
        System.out.println("刘德华 = " + 刘德华);
        System.out.println("地主牌 = " + 地主牌);
    }
}
import java.util.Comparator;
import java.util.List;

public class OrderDemo implements Comparator<String> {

    //3,4,5,6,7,8,9,1,J,Q,K,A,2,o,O,子
    //偷梁换柱
    //快速添加集合元素的方法 List接口下有 静态of方法,但是这种方法创建的集合对象不可变
    List<String> order = List.of("3", "4", "5", "6", "7", "8", "9", "1", "J", "Q", "K", "A", "2", "o", "O", "子");


    //o1 和 o2 代表的是牌 ♣3 ♥K
    @Override
    public int compare(String o1, String o2) {
        //获取字符串中第二个字符
        char c1 = o1.charAt(1);
        char c2 = o2.charAt(1);
        //在序列集合中找到这个字符对应的索引位置
        int i1 = order.indexOf(c1 + "");
        int i2 = order.indexOf(c2 + "");
        return i1 - i2;
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值