模拟斗地主洗牌,发牌
 使用HashMap,TreeSet和List来实现

效果如下图所示:

详细实现代码如下:

package star.july.tags;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;/*** 模拟斗地主洗牌,发牌* 使用HashMap,TreeSet和List来实现* @author Starjuly**/
public class Poker {public static void main(String[] args) {//先把牌设置好String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};String[] size = {"方块","梅花","红桃","大葵"};HashMap<Integer, String> hm = new HashMap<Integer,String>();ArrayList<Integer> list = new ArrayList<Integer>(); int index = 0;//装牌for(String s1 : num){for(String s2 : size){hm.put(index,s2.concat(s1));list.add(index);index++;}}//装大王和小王hm.put(index, "小王");list.add(index);index++;hm.put(index, "大王");list.add(index);//洗牌:将集合中的顺序打乱Collections.shuffle(list);//定义玩家和底牌TreeSet<Integer> GaoJin = new TreeSet<Integer>();TreeSet<Integer> LongWu = new TreeSet<Integer>();TreeSet<Integer> Me = new TreeSet<Integer>();TreeSet<Integer> DiPai = new TreeSet<Integer>();//将牌发给玩家和留3张底牌for(int i = 0 ; i < list.size() ; i++){if(i >= list.size() - 3){DiPai.add(list.get(i));}else if( i % 3 == 0){GaoJin.add(list.get(i));}else if( i % 3 == 1){LongWu.add(list.get(i));}else{Me.add(list.get(i));}}//遍历每个玩家手中的牌lookPoker(hm, GaoJin, "高进");lookPoker(hm, LongWu, "龙五");lookPoker(hm, Me, "自己");lookPoker(hm, DiPai, "底牌");}public static void lookPoker(HashMap<Integer, String> hm , TreeSet<Integer> ts,String name){System.out.print(name + " 手中的牌: ");for(Integer i : ts){               //用增强for循环遍历TreeSet集合String poker = hm.get(i);     //通过key找到HashMap中的值System.out.print(poker + " ");}System.out.println();}
}

Java中使用HashMap,TreeSet和List来实现模拟斗地主的洗牌和发牌的小例子相关推荐

  1. java练习:模拟试下你斗地主的洗牌、发牌、看牌功能

    /*** 需求:模拟实现斗地主的分牌情形* 分析: 1 模拟牌盒,存储54张牌,0-53 每个数字分别对应一张牌,用Map存储* 2 将0-53序号随机分发到三个人手中,欲实现序号的随机排序,考虑使用 ...

  2. [转]为什么Java中的HashMap默认加载因子是0.75

    前几天在一个群里看到有人讨论hashmap中的加载因子为什么是默认0.75. HashMap源码中的加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75 ...

  3. linux hashmap,Java中对HashMap的深度分析与比较

    Java中对HashMap的深度分析与比较 在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键.由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问 ...

  4. java中hashmap_Java HashMap – Java中的HashMap

    java中hashmap Java HashMap is one of the most popular Collection classes in java. Java HashMap is Has ...

  5. 使用List在Java中的HashMap实现

    HashMap is one of the most widely used implementation of Map to store key-value pairs. It was introd ...

  6. 关于Java中的HashMap的深浅拷贝的测试与几点思考

    0.前言 工作忙起来后,许久不看算法,竟然DFA敏感词算法都要看好一阵才能理解...真是和三阶魔方还原手法一样,田园将芜,非常可惜啊. 在DFA算法中,第一步是需要理解它的数据结构,在此基础上,涉及到 ...

  7. Java 中的 HashMap

    Java 中的 HashMap 作者:Grey 原文地址:Java 中的 HashMap 扩容机制 jdk1.7 先生成新数组. 遍历老数组中的每个位置上的链表上的个元素. 取个元素的key,并基于新 ...

  8. java foreach hashmap_在 Java 中遍历 HashMap 的5种最佳方式

    在本文中,我们将通过示例讨论在 Java 上遍历  HashMap  的五种最佳方式. 使用  Iterator  遍历 HashMap EntrySet 使用  Iterator  遍历 HashM ...

  9. Java实现斗地主游戏中洗牌,发牌,牌顺序逻辑

    需求: 在启动游戏房间时,应提前准备好54张牌完成洗牌,发牌,牌顺序逻辑. 分析: 1.当系统启动的同时需要准备好数据的时候,就可以用静态代码块了. 2.洗牌就是打乱牌的顺序. 3.定义三个玩家.依次 ...

最新文章

  1. c#_String.Split 方法进阶篇
  2. TableLayoutPanel
  3. 模块隐藏(LDR_MODULE链 与 PE特征)
  4. 请你讲一讲JavaScript有哪些数据类型, 数据类型判断有哪些方法?
  5. keepalived配置文件详解   ​
  6. html4废弃了哪些元素,HTML中的一些废弃元素_html
  7. 一个MD4在线加密脚本源码
  8. django-admin
  9. 手动方式配置IPsec隧道
  10. mysql数据库优化经验_MySQL数据库优化经验详谈
  11. 微信小程序源码获取(附工具的下载)
  12. Spring Boot 整合 Thymeleaf 完整 Web 案例
  13. 我家云刷机omv如何更改设置文件夹权限
  14. HDU6287 口算训练 【两种优化版分解质因数】【二分下标】
  15. iOS从零开始学习socket编程——HTTP1.0客户端
  16. [数字图像处理]模糊算法用于图像增强
  17. 弦截法求根c语言,弦截法求方程的根(c++)
  18. 服务器如何装系统和数据库,中软系统服务器及数据库安装规范(含维护).pdf
  19. java自动红包_Java一个简单的红包生成算法
  20. 一行代码教你七夕情人节如何告白❤—动漫3D相册(音乐+文字)HTML+CSS+JavaScript

热门文章

  1. Bitcoin0.21版 公链开发(3) 网关PHP windows上安装
  2. 汉字输入练习 TypeChinese.java
  3. 【django】创建模型类
  4. [How TO]-ubuntu下快速搭建http
  5. mysql 数据库引擎
  6. 1.4 Set集合:HashSet和TreeSet类
  7. 2016年蓝桥杯省赛题解
  8. sizeof()浅解
  9. 1.1.2 标准化工作及相关组织
  10. JMeter初探-安装与使用