集合嵌套,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

相关文章

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

详解Java中三种状态机实现方式来优雅消灭 if-else 嵌套

《详解Java中三种状态机实现方式来优雅消灭if-else嵌套》这篇文章主要为大家详细介绍了Java中三种状态机实现方式从而优雅消灭if-else嵌套,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录1. 前言2. 复现传统if-else实现的业务场景问题3. 用状态机模式改造3.1 定义状态接口3

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时