Collections工具类、模拟斗地主洗牌和发牌

Collections工具类的概述和常见方法讲解

A:Collections类概述: 针对集合操作 的工具类
B:Collections成员方法
public static void sort(List list): 排序,默认按照自然顺序
public static int binarySearch(List<?> list,T key): 二分查找
public static T max(Collection<?> coll): 获取最大值
public static void reverse(List<?> list): 反转
public static void shuffle(List<?> list): 随机置换
C:案例演示: Collections工具类的常见方法讲解

案例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;

public class MyTest2 {
    public static void main(String[] args) {
        // Collection Set List
        // A:
        // Collections类概述:
        // 针对集合操作 的工具类
        // B:
        // Collections成员方法
        // public static <T > void sort (List < T > list):排序, 默认按照自然顺序
        // public static <T > int binarySearch (List < ? > list, T key):二分查找
        // public static <T > T max(Collection < ? > coll):获取最大值
        // public static void reverse (List < ? > list):反转
        // public static void shuffle (List < ? > list):随机置换

        ArrayList<Integer> list = new ArrayList<>();
        list.add(100);
        list.add(1002);
        list.add(1030);
        list.add(1050);
        list.add(100);
        //list.sort();

        Collections.sort(list);
        //Collections.sort(list, new Comparator<Integer>() {
        //    @Override
        //    public int compare(Integer o1, Integer o2) {
        //        return 0;
        //    }
        //});
        //System.out.println(list);
        int i = Collections.binarySearch(list, 1050);
        System.out.println(i);

        System.out.println(Collections.max(list));
        System.out.println(Collections.min(list));
        Collections.reverse(list);//反转集合中的元素
        System.out.println(list);

        Collections.shuffle(list);//随机打乱集合中元素的顺序
        System.out.println(list);
    }
}

模拟斗地主洗牌和发牌

//A:
//案例演示:
//模拟斗地主洗牌和发牌,牌没有排序
//得有一副牌
案例:

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

public class MyTest {
    public static void main(String[] args) {
        //A:
        //案例演示:
        //模拟斗地主洗牌和发牌,牌没有排序
        //得有一副牌
        ArrayList<String> pokerBox = new ArrayList<>();
        //生成54张牌放到牌盒里面
        String[] colors = {"♠", "♥", "♦", "♣"};
        String[] nums = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
        for (String color : colors) {
            for (String num : nums) {
                pokerBox.add(color.concat(num));
            }
        }
        //手动添加大小王
        pokerBox.add("★");
        pokerBox.add("☆");
        //洗牌
        Collections.shuffle(pokerBox);
        Collections.shuffle(pokerBox);
        Collections.shuffle(pokerBox);
        //发牌
        ArrayList<String> 高进 = new ArrayList<>();
        ArrayList<String> 刀仔 = new ArrayList<>();
        ArrayList<String> 星仔 = new ArrayList<>();
        ArrayList<String> 底牌 = new ArrayList<>();
        // 高进 = (ArrayList<String>) pokerBox.subList(0,17);
        // 高进 0  3 6 9
        //刀仔 1 4 7 10
        //  星仔 2 5 8 11
        for (int i = 0; i < pokerBox.size(); i++) {
            if (i >= pokerBox.size() - 3) {
                底牌.add(pokerBox.get(i));
            } else if (i % 3 == 0) {
                高进.add(pokerBox.get(i));
            } else if (i % 3 == 1) {
                刀仔.add(pokerBox.get(i));
            } else {
                星仔.add(pokerBox.get(i));
            }
        }

        //看牌
        lookPoker("高进",高进);
        lookPoker("刀仔", 刀仔);
        lookPoker("星仔", 星仔);
        lookPoker("底牌", 底牌);


    }

    private static void lookPoker(String name, ArrayList<String> list) {
        System.out.println(name);
        for (String s : list) {
            System.out.print(s+"   ");
        }
        System.out.println();
    }
}

结果:
高进
♦K ♣6 ♠3 ♥8 ♥2 ♥3 ♣10 ♥K ♦6 ♣8 ♠7 ♣3 ♠K ♣7 ♦4 ♥9 ♦7
刀仔
♦8 ♠J ★ ♥Q ♦Q ♥4 ☆ ♥5 ♠9 ♦5 ♣9 ♣Q ♠5 ♠4 ♥10 ♦A ♥J
星仔
♠A ♦2 ♦9 ♣5 ♣J ♦3 ♦10 ♥6 ♠2 ♦J ♣2 ♥7 ♣4 ♣K ♠Q ♠10 ♠8
底牌
♥A ♠6 ♣A

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值