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

2024-03-30 21:28

本文主要是介绍集合嵌套,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);//遍历gradeListfor (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

这篇关于集合嵌套,Collections,斗地主案例,日志框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/862616

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

python展开嵌套列表的多种方法

《python展开嵌套列表的多种方法》本文主要介绍了python展开嵌套列表的多种方法,包括for循环、列表推导式和sum函数三种方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、嵌套列表格式二、嵌套列表展开方法(一)for循环(1)for循环+append()(2)for循环+pyPhWiFd