集合嵌套,Collections,斗地主案例,日志框架

文章目录

  • 集合嵌套
    • List嵌套List
    • List嵌套Map
    • Map嵌套Map
  • Collections类
    • 方法
      • 排序 sort
    • 乱序 shuffle
  • 斗地主案例
    • 需求
    • 思路
    • 代码
  • 日志框架
    • 介绍
    • 优势
    • 体系结构
    • Logback
      • 概述
      • 快速入门
      • 配置详解

集合嵌套

List嵌套List

public static void main(String[] args){
        //一个年级有许多班级,每个班级有许多学生,学生有姓名
        //定义班级
        List<String> classes1List = new ArrayList<>();
        classes1List.add("zhangsan");
        classes1List.add("lisi");
        classes1List.add("wangwu");

        List<String> classes2List = new ArrayList<>();
        classes2List.add("zhangsan2");
        classes2List.add("lisi2");
        classes2List.add("wangwu2");

        List<String> classes3List = new ArrayList<>();
        classes3List.add("zhangsan3");
        classes3List.add("lisi3");
        classes3List.add("wangwu3");

        //定义年级
        List<List<String>> gradeList = new ArrayList<>();
        gradeList.add(classes1List);
        gradeList.add(classes2List);
        gradeList.add(classes3List);

        //遍历gradeList
        for (List<String> classes : gradeList) {
            for (int i = 0; i < classes.size(); i++) {
                System.out.println(classes.get(i));
            }
            System.out.println("--------------------");
        }
    }

List嵌套Map

public static void main(String[] args) {
    //先定义班级
    Map<String,String> classes1Map = new HashMap<>();
    classes1Map.put("001","zhangsan");
    classes1Map.put("002","lisi");
    classes1Map.put("003","wangwu");

    Map<String,String> classes2Map = new HashMap<>();
    classes2Map.put("001","zhangsan2");
    classes2Map.put("002","lisi2");
    classes2Map.put("003","wangwu2");

    Map<String,String> classes3Map = new HashMap<>();
    classes3Map.put("001","zhangsan3");
    classes3Map.put("002","lisi3");
    classes3Map.put("003","wangwu3");

    //定义年级
    List<Map<String,String>> gradeList = new ArrayList<>();
    gradeList.add(classes1Map);
    gradeList.add(classes2Map);
    gradeList.add(classes3Map);

    //遍历
    for (Map<String, String> classes : gradeList) {
        for (Map.Entry<String, String> entry : classes.entrySet()) {
            String id = entry.getKey();
            String name = entry.getValue();
            System.out.println(id + "--" + name);
        }
        System.out.println("------------------");
    }
}

Map嵌套Map

 public static void main(String[] args) {
        //先定义班级
        Map<String,String> classes1Map = new HashMap<>();
        classes1Map.put("001","zhangsan");
        classes1Map.put("002","lisi");
        classes1Map.put("003","wangwu");

        Map<String,String> classes2Map = new HashMap<>();
        classes2Map.put("001","zhangsan2");
        classes2Map.put("002","lisi2");
        classes2Map.put("003","wangwu2");

        Map<String,String> classes3Map = new HashMap<>();
        classes3Map.put("001","zhangsan3");
        classes3Map.put("002","lisi3");
        classes3Map.put("003","wangwu3");

        //再定义年级
        Map<String,Map<String,String>> gradeMap = new HashMap<>();
        gradeMap.put("第一个班级",classes1Map);
        gradeMap.put("第二个班级",classes2Map);
        gradeMap.put("第三个班级",classes3Map);

        //遍历
        for (String s : gradeMap.keySet()) {

            System.out.println("--------------");
            for (Map.Entry<String, String> entry : gradeMap.get(s).entrySet()) {
                String id = entry.getKey();
                String name = entry.getValue();
                System.out.println(s + ":" + id + "--" + name);
            }
        }

    }

Collections类

方法

排序 sort

Snipaste_2024-03-30_14-53-30.png

乱序 shuffle

Snipaste_2024-03-30_14-54-09.png

斗地主案例

需求

Snipaste_2024-03-30_15-47-41.png

思路

  1. 准备牌
    1. 完成数字和纸牌的映射,使用Map集合
    2. 利用list集合记录牌的编号
  2. 洗牌:利用Collections.shuffle方法对其洗牌
  3. 发牌:将牌的编号对3取余,剩下3张作为底牌
    1. 利用TreeSet集合保存三个人的拍编号
  4. 看牌,通过TreeSet集合中牌的编号利用Map集合查看牌

代码

public static void main(String[] args) {
        //准备牌
        Map<Integer, String> pokerMap = new HashMap<>();
        List<Integer> pokerNum = new ArrayList<>();
        preparePoker(pokerMap, pokerNum);

        //洗牌
        Collections.shuffle(pokerNum);
        //System.out.println(pokerNum);

        //发牌
        TreeSet<Integer> player1 = takePoker(pokerNum,1);
        TreeSet<Integer> player2 = takePoker(pokerNum,2);
        TreeSet<Integer> player3 = takePoker(pokerNum,3);
        TreeSet<Integer> dp = takePoker(pokerNum,0);
        
//        System.out.println(player1);
//        System.out.println(player2);
//        System.out.println(player3);
//        System.out.println(dp);

        //看牌
        lookPoker("zhangsan", player1, pokerMap);
        lookPoker("lisi", player2, pokerMap);
        lookPoker("wangwu", player3, pokerMap);
        lookPoker("底牌", dp, pokerMap);


    }

    //准备牌
    public static void preparePoker(Map<Integer, String> pokerMap, List<Integer> pokerNum) {
        String[] colors = {"♠", "♥", "♣", "♦"};
        String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};

        int index = 0;
        pokerMap.put(index, "大王");
        pokerNum.add(index);
        index++;
        pokerMap.put(index, "小王");
        pokerNum.add(index);
        index++;
        for (int i = 0; i < numbers.length; i++) {
            for (int j = 0; j < colors.length; j++) {
                pokerMap.put(index, colors[j] + numbers[i]);
                pokerNum.add(index);
                index++;
            }
        }
        //System.out.println(pokerMap);
    }

    //发牌
    public static TreeSet<Integer> takePoker(List<Integer> pokerNum,Integer id) {

        TreeSet<Integer> player1 = new TreeSet<>();
        TreeSet<Integer> player2 = new TreeSet<>();
        TreeSet<Integer> player3 = new TreeSet<>();
        TreeSet<Integer> dp = new TreeSet<>();//底牌

        for (int i = 0; i < pokerNum.size(); i++) {
            if (i > pokerNum.size() - 4) {
                dp.add(pokerNum.get(i));
            } else if (i % 3 == 0) {
                player1.add(pokerNum.get(i));
            } else if (i % 3 == 1) {
                player2.add(pokerNum.get(i));
            } else if (i % 3 == 2) {
                player3.add(pokerNum.get(i));
            }
        }

        if (id == 0){
            return dp;
        } else if (id == 1) {
            return player1;
        }else if (id == 2){
            return player2;
        } else if (id == 3) {
            return player3;
        }
        return new TreeSet<>();
    }

    //看牌
    public static void lookPoker(String name, TreeSet<Integer> player, Map<Integer, String> pokerMap) {
        System.out.println(name + "的牌是:");
        for (Integer pokerNum : player) {
            String poker = pokerMap.get(pokerNum);
            System.out.print(poker + " ");
        }
        System.out.println();

    }

日志框架

介绍

程序中的日志可以用来记录程序中运行过程中的信息,并可以进行永久存储

优势

  • 可以将系统执行的信息选择性的记录到指定的位置(控制台,文件,数据库中)
  • 可以随时以开关的形式控制是否记录日志,无需修改源代码

体系结构

Snipaste_2024-03-30_17-56-26.png

Logback

概述

Snipaste_2024-03-30_17-58-06.png

快速入门

Snipaste_2024-03-30_17-59-39.png

配置详解

Snipaste_2024-03-30_18-12-26.png
Snipaste_2024-03-30_18-13-08.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/502411.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring boot 整合j2cache 基础操作

spring boot 整合缓存的内容呢 已经学了好久了 那么 今天 我们开始学习 j2cache 这个技术 并不是一个缓存 而是一个框架 我们可以将其他缓存配到这套框架上来 那么 我们就还是弄最熟悉的 ehcache redis进行整合 首先 我们启动 redis 然后 我们打开项目 pom.xml 注入依赖 …

【2024系统架构设计】案例分析- 2 系统开发基础

目录 一 基础知识 二 真题 一 基础知识 1 结构化的需求分析 结构化特点:自顶向下,逐步分解,面向数据。 三大模型:

springboot通过threadLocal+参数解析器实现保存当前用户登录信息

首先先介绍一下threadLocal ThreadLocal 线程局部变量&#xff0c;创建一个线程变量后&#xff0c;针对这个变量可以让每个线程拥有自己的变量副本&#xff0c;每个线程是访问的自己的副本&#xff0c;与其他线程的相互独立。 大致知道threadLocal就可以了&#xff0c;然后我…

web基础07-Vue

目录 一、Vue 1.概述 2.MVC与MVVM 3.快速入门 4.Vue工程的创建 &#xff08;1&#xff09;基于vue-cli &#xff08;2&#xff09;基于Vite&#xff08;推荐&#xff09; 5.Vue3核心语法 6.setup &#xff08;1&#xff09;概述 &#xff08;2&#xff09;返回值方式…

CTF题型 php://filter特殊编码绕过小汇总

CTF题型 php://filter特殊编码绕过小汇总 文章目录 CTF题型 php://filter特殊编码绕过小汇总特殊编码base64编码string过滤器iconv字符集 例题1.[Newstarctf 2023 week2 include]2.[Ctfshow web 117] php://filter 是一个伪协议&#xff0c;它允许你读取经过过滤器处理的数据流…

Java中的Object类解析与应用探究

作为一名对技术充满热情的学习者&#xff0c;我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代&#xff0c;我远非专家&#xff0c;而是一位不断追求进步的旅行者。通过这篇博客&#xff0c;我想分享我在某个领域的学习经验&#xff0c;与大家共同探讨、共…

基于单片机自行车码表系统设计

**单片机设计介绍&#xff0c;基于单片机自行车码表系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机自行车码表系统设计主要涵盖了硬件设计、软件设计以及功能实现等多个方面。以下是对该设计概要的详细描述&#xff1a…

Sql注入靶场环境搭建

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器…

全国青少年软件编程(Python)等级考试三级考试真题2023年12月——持续更新.....

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;三级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共25题&#xff0c;共50分) 1.一个非零的二进制正整数&#xff0c;在其末尾添加两个“0”&#xff0c;则该新数将是原数的&#xf…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(3)

PS从入门到精通视频各类教程整理全集&#xff0c;包含素材、作业等 最新PS以及插件合集&#xff0c;可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制&#xff0c;今天先分享到这里&#xff0c;后续持续更新 中级教程 https://www.alipan.com/s/unii5YxtM8B 提…

【计算机考研】408复习资料汇总+分享

王道对于当作408的参考书还是不错的 所以&#xff0c;矮子里面挑高个&#xff0c;大家将就一下算了&#xff0c;很多人说天勤的讲义也可以&#xff0c;只能说你去用一下试试就知道了&#xff0c;天勤除了数据结构的代码还可以&#xff0c;其他的比不过王道的资料。所以&#x…

视频监控联网平台的评价指标体系

目录 一、视频应用系统评价指标体系的设计思路 &#xff08;一&#xff09;、明确评价目标和原则 &#xff08;二&#xff09;、确定评价指标 &#xff08;三&#xff09;、收集和处理数据 &#xff08;四&#xff09;、建立评价模型 &#xff08;五&#xff09;、进行综…

Linux---命令行参数

一、命令行参数 在介绍命令行参数前&#xff0c;我想问大家一个问题&#xff0c;在以前写C/C时&#xff0c;main 函数可不可以带参数&#xff1f; 答案是可以带的&#xff0c;int main(int argc, char* argv[]){}&#xff0c;但平时写代码时也证明了&#xff0c;main 函数的参…

Android客户端自动化UI自动化airtest从0到1搭建macos+脚本设计demo演示+全网最全最详细保姆级有步骤有图

iOS客户端自动化UI自动化airtest从0到1搭建macosdemo演示-CSDN博客 一、基础环境 1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败 下载.dmg文件 苹果电脑 &#xff5c; macOS &#xff5c; jdk1.8 &#xff5c; 环境变量配置_jdk1.8 mac-CSDN博客 Java Downloads …

德邦快递、物流上门取件,超过3kg,大件发德邦更优惠

“寄行李&#xff0c;出闲置物品&#xff0c;旅游寄特产”&#xff0c;发德邦&#xff1b; “家具、家电、机械设备等大件物品”&#xff0c;发德邦&#xff1b; “跨省或长距离的货物运输”&#xff0c;发德邦&#xff1b; “电商卖家&#xff0c;需要定期批量发货”,发德邦…

通过MobaXterm工具可视化服务器桌面

一、MobaXterm工具 MobaXterm是一款功能强大的远程连接工具&#xff0c;可以连接到各种类型的服务器&#xff0c;包括Linux、Windows和MacOS。支持多种协议&#xff0c;包括SSH、RDP、VNC和Telnet MobaXterm可以通过X11转发功能可视化服务器桌面。 二、MobaXterm工具可视化服务…

制作教程:如何制作一个可组合多种内容的二维码

二维码中如何放入图片和文字呢&#xff1f;现在我们经常需要通过扫码的方式&#xff0c;在手机上查看二维码中的内容&#xff0c;比如常见的类型有视频、图片、文件、文字、表单等类型。其中&#xff0c;一般在查看物品信息或者人员信息多以图文的形式来展示&#xff0c;那么图…

9.0-源码分析:Dubbo Remoting 层核心接口分析

dubbo-remoting 模块&#xff0c;该模块提供了多种客户端和服务端通信的功能。在 Dubbo 的整体架构设计图中&#xff0c;我们可以看到最底层红色框选中的部分即为 Remoting 层&#xff0c;其中包括了 Exchange、Transport和Serialize 三个子层次。这里我们要介绍的 dubbo-remot…

love 2d Lua 俄罗斯方块超详细教程

源码已经更新在CSDN的码库里&#xff1a; git clone https://gitcode.com/funsion/love2d-game.git 一直在找Lua 能快速便捷实现图形界面的软件&#xff0c;找了一堆&#xff0c;终于发现love2d是小而美的原生lua图形界面实现的方式。 并参考相关教程做了一个更详细的&#x…

javaWeb项目-学生考勤管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、JAVA技术 JavaSc…