集合类方法

最近学到java的各个集合类,常用的有List,Set,Map,这三个都是接口,其中List和Set继承了Collections。

为了锻炼实际掌握各种常用方法的案例,自己写了个斗地主案例

要求

  1. 组装54张扑克牌将
  2. 54张牌顺序打乱
  3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
  4. 查看三人各自手中的牌(按照牌的大小排序)、底牌

需求分析

  1. 准备牌: 完成数字与纸牌的映射关系: 使用双列Map(HashMap)集合,完成一个数字与字符串纸牌的对应关系(相当于一个字典)。
  2. 洗牌: 通过数字完成洗牌发牌
  3. 发牌: 将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。 存放的过程中要求数字大小与斗地主规则的大小对应。 将代表不同纸牌的数字分配给不同的玩家与底牌。
  4. 看牌: 通过Map集合找到对应字符展示。 通过查询纸牌与数字的对应关系,由数字转成纸牌字符串再进行展示。

代码实现

package advancedgrammer.collection;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;public class FightLoad {public static void main(String[] args) {List<String> colors = List.of("红桃", "黑桃", "方块", "梅花"); List<String> numbers = List.of( "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A","2");ArrayList<Integer> index = new ArrayList<>();  //存放牌的索引,shuffle后发给三个人HashMap<Integer, String> poker = new HashMap<>();  //表示牌的hashmap,把54张牌按大小索引存放。int in = 0;for (String number : numbers) {for (String color : colors) {index.add(in);poker.put(in++, color + number);}}poker.put(52, "大王");index.add(52);poker.put(53, "小王");index.add(53);
//        System.out.println(poker);Collections.shuffle(index);System.out.println(index);ArrayList<Integer> index1 = new ArrayList<>();  //放每个玩家拿到的牌ArrayList<Integer> index2 = new ArrayList<>();ArrayList<Integer> index3 = new ArrayList<>();ArrayList<Integer> dipaiindex = new ArrayList<>();for (int i = 0; i < 54; i++) {//发牌给三个玩家和底牌if (i > 50) {dipaiindex.add(index.get(i));}else if (i % 3 == 0) {index1.add(index.get(i));}else if (i % 3 == 1) {index2.add(index.get(i));}else if (i % 3 == 2) {index3.add(index.get(i));}}check("诸葛大力",index1,poker);check("陈美嘉",index2,poker);check("诺澜",index3,poker);check("婉瑜",dipaiindex,poker);}//提高复用性,每个玩家的看牌的方法public static void check(String name,ArrayList<Integer> index,HashMap<Integer, String> poker) {Collections.sort(index);System.out.print(name + ":");for (Integer integer : index) {System.out.print(poker.get(integer) + " ");}System.out.println();};
}

一次看牌的结果

java学习笔记 - 集合类综合案例 斗地主相关推荐

  1. Java基础加强重温_05:Iterator迭代器、增强for循环、集合综合案例-斗地主、数据结构(栈、队列、数组、链表、红黑树)、List接口、Set接口

    摘要: Java基础加强重温_05: Iterator迭代器(指针跟踪元素). 增强for循环(格式.底层). 集合综合案例-斗地主(代码规范抽取代码,集合元素打乱). 数据结构[栈(先进后出,子弹夹 ...

  2. java学习笔记---5

    IO流 I〇流概述: lO:输入/输出(Input/Output) 流:是一种抽象概念,是对数据传输的总称.也就是说数据在设备间的传输称为流,流的本质是数据传输IO流就是用来处理设备间数据传输问题的: ...

  3. java学习笔记11--集合总结

    java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...

  4. Java学习笔记——流程控制

    Java学习笔记--流程控制 Day05 一.用户交互Scanner 1.Scanner对象 我们通过Java工具包java.util.Scanner中的Scanner类来获取用户的输入 基本语法:S ...

  5. java学习笔记day09 final、多态、抽象类、接口

    java学习笔记day09 思维导图 final . 多态 . 抽象类 . 接口 (都很重要) 一.final 二.多态 多态中的成员访问特点⭐ [P237] 多态的好处 [P239] 多态的弊端 向 ...

  6. java学习笔记:全部,txt版本

    java学习笔记:全部,txt版本 笔者注: 1.不知道怎么上传附件,所以就把txt文本内容全部贴在这里吧. 2.已经把txt版本的笔记上传到CSDN了,我没有设置索要积分才能下载,但是不知道为什么C ...

  7. Java学习笔记 第八天

    Java学习笔记 第八天 第一章 API 1.1 概述: 1.2 API文档的使用步骤:** 第二章 Scanner类 2.1 概述 2.2 引用类型使用步骤 2.3 Scanner类练习1---求和 ...

  8. Java学习笔记-Day64 Spring 框架(二)

    Java学习笔记-Day64 Spring 框架(二) 一.控制反转IOC和依赖注入DI 1.控制反转IOC 2.依赖注入DI 3.Spring IOC容器 3.1.简介 3.2.实现容器 3.2.获 ...

  9. JAVA学习笔记(1)【基础知识】

    JAVA学习笔记DAY_1 提示:关于java系列的内容只是本人在老师的指导下和自学过程中的一些学习笔记,如果存在错误敬请批评指正! 文章目录 JAVA学习笔记DAY_1 前言 一.Java语言未来的 ...

最新文章

  1. nova hypervisor接口添加host_ip字段
  2. Java 技术小图谱
  3. Java_Spring MVC_Servlet
  4. 构建大型网站架构服务器集群(转)
  5. BigData | 一文带你搞清楚“数据倾斜”
  6. python编写水仙花数
  7. 电脑软件推荐【含软件链接】:压缩,插件,截屏,录制,办公,电脑防护与修复,磁盘清理,软件卸载......
  8. 光环PMP 串讲冲刺 敏捷
  9. Nodejs教程15:net模块初探
  10. 运动学逆解(四足机器狗)
  11. 加拿大蒙特利尔城市风景高清Mac动态壁纸
  12. css中图片在div中的位置,纯CSS实现任意图片在div中垂直居中
  13. 摩托车新手驾驶教程[3]
  14. 《Thinking In Java》作者:不要使用并发!
  15. 常见的BeanUtils.populate异常 解决方案
  16. python控件_python常用控件
  17. SQL Server 2005系列教学(11) 约束
  18. Ubuntu 22.04 安装R语言及R studio
  19. 新闻丨智链万源CEO董宁受邀参加NTT DATA全球区块链峰会,畅谈数字化信任经济...
  20. matlab模拟gpd,GPD WIN1流畅玩游戏之DOS游戏,阿猫阿狗大作战 大宇16个DOS游戏全合集...

热门文章

  1. 文本分类:4、工程经验
  2. 项目记录——ANSYS Fluent入门翼型风洞模型计算
  3. 我为什么要离开传智再去创业?
  4. mysql分组取最新
  5. SpringCloud神兽(二)之Ribbon
  6. 向毕业妥协系列之机器学习笔记:监督学习-回归与分类(一)
  7. python爬取pexels网站图片
  8. luogu P4881 hby与tkw的基情
  9. spark出现crossJoin笛卡尔积报错异常解决use the CROSS JOIN syntax to allow cartesian products between these
  10. 用python和adb将一加便签内容迁移到小米或其他品牌便签软件