Java集合存储的灵活运用
List集合存储 54个编号

Map <key,value> key 对应的是编号 , value 是 牌的花色(红方梅黑)+ 具体的一张牌 ,比如 黑桃2

用2个数组 存放 花色+ 13张牌

将牌的信息 存入到 list和map

发牌了… (需要打乱顺序)

看一下 自己是什么牌 (看牌)

代码如下
package DouDiZhu;

import java.util.*;

public class DouDiZhuDemo {
public static void main(String[] args) {

//存放编号
List<Integer> list=new ArrayList<>();
//保存牌的信息
Map<Integer,String> map=new HashMap<>();

//存放4中花色
String []color={"♥","♠","♦","♣"};

//存放13张牌
String [] number={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

//记录 54张牌 从0-53
Integer Zongpai=0;

//存储牌信息到上面两个集合

for(String num:number){

for(String col:color){
map.put(Zongpai,col+num);
list.add(Zongpai);
Zongpai++;
}
}

//给54张牌添加大小王
map.put(52,"大王");
map.put(53,"小王");
list.add(52);
list.add(53);

//发牌之前打乱牌的顺序
Collections.shuffle(list); //打乱0-53

//发牌准备人数和底牌(3人,底牌3张)
List<Integer> p1=new ArrayList<>();//第一个人
List<Integer> p2=new ArrayList<>();//第二个人
List<Integer> p3=new ArrayList<>();//第三个人
List<Integer> dipai=new ArrayList<>();//三张底牌

//开始发牌了
for (int i = 0;i<list.size() ; i++) {
//先把三张底牌拿出来
if (i<3){
dipai.add(list.get(i));
}//现在剩余51张牌了
else if(i%3==0){
p1.add(list.get(i));
}else if(i%3==1){
p2.add(list.get(i));
}else {
p3.add(list.get(i));
}

}

//将自己的牌排序
Collections.sort(p1);
Collections.sort(p2);
Collections.sort(p3);
Collections.sort(dipai);

//看牌 (有3个人名 . 每个人都可以看自己的集合数据)
// 需要3个数据 , 姓名+p1/p2/p3+map
show("夏飞飞",p1,map);
show("吕登登",p2,map);
show("马总",p3,map);
}

private static void show(String name, List<Integer> list, Map<Integer, String> map) {
//首先看到的名字
System.out.println(name+" ");
for(Integer in:list){
String value = map.get(in);
System.out.print(value+" ");
}

System.out.println();
}

}

Java程序斗地主发牌代码,List、Map集合的应用的更多相关文章

  1. Android(java)学习笔记102:Map集合功能概述

    下面通过代码引入Map集合:如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生来说,是 ...

  2. Android(java)学习笔记41:Map集合功能概述

    1. 下面通过代码引入Map集合: 如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生 ...

  3. Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)

    import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...

  4. java 模拟斗地主发牌洗牌

    一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...

  5. java学习第18天(map集合)

    Map集合是将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 存储的是键值对形式的元素,键唯一,值可以重复,有点类似于数据库中的主键加数据.主要功能有: A:添加功能 put ...

  6. Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值

    package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...

  7. Android(java)学习笔记104:Map集合的遍历之键找值

    package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...

  8. Android(java)学习笔记103:Map集合的获取功能

    package cn.itcast_01; import java.util.Collection; import java.util.HashMap; import java.util.Map; i ...

  9. Java程序国际化学习代码一

    Java程序国际化初识 1.基本思路 Java程序的国际化的思路是将程序中的标签.提示等信息放在资源文件中,程序需要支持哪些国家.语言环境,就对应提供相应的资源文件.资源文件是key-value对,每 ...

随机推荐

  1. 一场由yield引发的连串拷问

    最近在学习Python中生成器时,遇到了一个yield关键词,廖雪峰老师的官网中也没有详细的解释,经过一番查阅和研究,终于对它有了一些认识并做了总结(如有不对之处,还请大神指正). 首先先简单了解下生 ...

  2. mybatis缓存之一级缓存(二)

    这篇文章介绍下mybatis的一级缓存的生命周期 一级缓存的产生 一级缓存的产生,并不是看mappper的xml文件的select方法,看下面的例子 mapper.xml <select id= ...

  3. python自学之基础知识

    python学习笔记 列表的添加拓展 列表的批量添加 用for循环可以批量添加 list=['李雷雷','韩梅梅',180,110] for i in rang(3): list.append(i) ...

  4. 浅谈MySQL数据库

    目录 什么是数据库 定义 发展现状 数据库基本概念 数据库分类 关系数据库 非关系型数据库(NoSQL) 数据库启动与连接 启动服务端 连接数据库 用户信息查看 数据库的基本操作 表的基本操作 记录的 ...

  5. 洛谷 P3243 【[HNOI2015]菜肴制作】

    先吐槽一下这个难度吧,评的有点高了,但是希望别降,毕竟这是我能做出来的不多的紫题了(狗头). 大家上来的第一反应应该都是啊,模板题,然后兴高采烈的打了拓补排序的板子,然后搞个小根堆,按照字典序输出就可 ...

  6. 轻松让HTML5可以显示桌面通知Notification非常实用

    使用Notification的流程 1.检查浏览器是否支持Notification2.检查浏览器的通知权限3.如果权限不够则申请获取权限4.创建消息通知5.展示消息通知 Notification AP ...

  7. OldTrafford after 102 days

    THE RED GO MARCHING ON   One Team One Love Through the highs and the lows   One hundred and two long ...

  8. (一)ansible 安装配置

    CentOS 7.5 一,安装 yum -y install ansible 二,配置hosts文件 /etc/ansible/hosts s1 ansible_ssh_port= ansible_s ...

  9. 包含min函数的栈(剑指offer-20)

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法 ...

  10. JVM 专题三:类加载子系统(一)类装载器子系统

    类装载器子系统 1.1 什么是类装载子系统? 类装载器子系统负责从文件系统或者网络中加载Class文件,Class文件在文件开头有特定的文件标识(魔数). 类装载器子系统(ClassLoader)只负 ...