import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List; public class DouDiZhu {
public static void main(String[] args) {
//牌谱
HashMap<Integer, String> pooker = new HashMap<>();
//List:store number
List<Integer> pookernumber = new ArrayList<>();
//定义出13个点数的数组
String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
//定义4个花色数组
String[] colors = {"♠", "♥", "♣", "♦"};
//
int index = 2;
for (String number : numbers) {
for (String color : colors) {
pooker.put(index, color + number);
pookernumber.add(index);
index++;
}
}
//存储大王,和小王
pooker.put(0, "大王");
pookernumber.add(0);
pooker.put(1, "小王");
pookernumber.add(1); //打乱编号
Collections.shuffle(pookernumber);
//发牌:三个玩家和底牌
List<Integer> player1 = new ArrayList<>();
List<Integer> player2 = new ArrayList<>();
List<Integer> player3 = new ArrayList<>();
List<Integer> bottom = new ArrayList<>();
for (int i = 0; i < pookernumber.size(); i++) {
if(i<17){
player1.add(pookernumber.get(i));
}else if(i<17+17){
player2.add(pookernumber.get(i));
}else if(i<17+17+17){
player3.add(pookernumber.get(i));
}else {
bottom.add(pookernumber.get(i));
}
}
//player number sort
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
//show
look("player1",player1,pooker);
look("player2",player2,pooker);
look("player3",player3,pooker);
look("bottom",bottom,pooker);
}
public static void look(String name,List<Integer> player,HashMap<Integer,String> pooker){
//遍历ArrayList集合,获取元素,作为键,到集合Map中找值
System.out.print(name+" ");
for(Integer key : player){
String value = pooker.get(key);
System.out.print(value+" ");
}
System.out.println();
}
}

多次运行测试一下:

player1 ♠2 ♥2 ♥A ♣A ♦A ♠Q ♣Q ♦Q ♥J ♣9 ♣8 ♥7 ♠6 ♠5 ♣5 ♠4 ♦3
player2 大王 ♦2 ♠K ♦K ♠J ♣J ♦J ♦10 ♥9 ♦8 ♣6 ♦6 ♥4 ♣4 ♦4 ♠3 ♥3
player3 小王 ♣2 ♠A ♥K ♣K ♥Q ♥10 ♠9 ♦9 ♠8 ♥8 ♣7 ♦7 ♥6 ♥5 ♦5 ♣3
bottom ♣10 ♠7 ♠10
player1 小王 ♠2 ♥2 ♣2 ♠A ♣K ♦Q ♥J ♥9 ♣9 ♦9 ♠8 ♣8 ♣7 ♠4 ♣3 ♦3
player2 ♦2 ♥K ♦K ♠Q ♦J ♣10 ♦10 ♠9 ♥8 ♦8 ♥6 ♣6 ♦6 ♠5 ♥4 ♠3 ♥3
player3 大王 ♥A ♣A ♦A ♠K ♥Q ♠J ♣J ♥10 ♠7 ♥7 ♦7 ♠6 ♥5 ♣5 ♣4 ♦4
bottom ♠10 ♦5 ♣Q
player1 ♥2 ♦2 ♥A ♦A ♠K ♣J ♦J ♠10 ♣10 ♠9 ♣8 ♦8 ♣7 ♣6 ♥4 ♣4 ♦4
player2 大王 小王 ♠2 ♣K ♦K ♠Q ♣Q ♥10 ♥9 ♦9 ♥8 ♥7 ♠6 ♥6 ♣5 ♠3 ♣3
player3 ♣2 ♠A ♣A ♥K ♥Q ♦Q ♠J ♥J ♦10 ♣9 ♠7 ♦7 ♦6 ♥5 ♠4 ♥3 ♦3
bottom ♦5 ♠8 ♠5

Java——利用集合类实现简单斗地主发牌的更多相关文章

  1. Java之集合类

    出处:http://blog.csdn.net/zhangerqing 一.集合类简介 数组是很常用的一种的数据结构,我们用它可以满足很多的功能,但是,有时我们会遇到如下这样的问题: 1.我们需要该容 ...

  2. Java利用Preferences设置个人偏好

    Java利用Preferences设置个人偏好 Preferences的中文意思即偏好或喜好的意思,也就是说同一个程序在每次运行完后,可以通过Preferences来记录用户的偏好,下次启动时,程序会 ...

  3. Java的集合类

    转自:Q.Mr的博客 http://www.cnblogs.com/zrtqsk/p/3472258.html (本人第一次写博客,部分内容有参照李刚老师的疯狂java系列图书,如有遗漏错误,请多指教 ...

  4. java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板

    java 利用spring JavaMailSenderImpl发送邮件,支持普通文本.附件.html.velocity模板 博客分类: Java Spring   本文主要介绍利用JavaMailS ...

  5. Unity NGUI 网络斗地主 -发牌 脚本交互

    Unity NGUI 网络斗地主 -发牌 脚本交互 @By 灰太龙 Unity4.2.1f4 NGUI 3.0.4 本篇说的问题是脚本与控件的交互! 现在对界面进行了改进,先看副图! 1.制作发牌效果 ...

  6. 利用LinkedHashMap实现简单的缓存

    update1:第二个实现,读操作不必要采用独占锁,缓存显然是读多于写,读的时候一开始用独占锁是考虑到要递增计数和更新时间戳要加锁,不过这两个变量都是采用原子变量,因此也不必采用独占锁,修改为读写锁. ...

  7. 首先java中集合类主要有两大分支

    本文仅分析部分原理和集合类的特点,不分析源码,旨在对java的集合类有一个整体的认识,理解各个不同类的关联和区别,让大家在不同的环境下学会选择不同的类来处理. Java中的集合类包含的内容很多而且很重 ...

  8. 【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)

    https://www.cnblogs.com/xdp-gacl/p/4187089.html http://doc.okbase.net/yuanfy008/archive/265663.html ...

  9. Java利用poi生成word(包含插入图片,动态表格,行合并)

    转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...

随机推荐

  1. Spring Boot -- actuator

    Spring Boot有四大神器,分别是auto-configuration.starters.cli.actuator,本文主要讲actuator.actuator是spring boot提供的对应 ...

  2. java try中包含return语句,finally中的return语句返回顺序

    //结论: finally 中的代码比 return 和 break 语句后执行 public static void main(String[] args) { int x=new Test.tes ...

  3. 幻想乡三连C:狂飙突进的幻想乡

    题解: 不难发现,对于每一条从$S$到$T$的路径,设其$x.y$的和为$S_x.S_y$,其对答案的贡献是$a\cdot S_x+(1-a)\cdot S_y$,这是一个关于$a$的一次函数.而所有 ...

  4. POJ1741 Tree(树的点分治基础题)

    Give a tree with n vertices,each edge has a length(positive integer less than 1001).Define dist(u,v) ...

  5. POJ3565 Ants 和 POJ2195 Going Home

    Ants Language:Default Ants Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7975 Accepted: ...

  6. ACM学习历程—BestCoder Round #75

    1001:King's Cake(数论) http://acm.hdu.edu.cn/showproblem.php?pid=5640 这题有点辗转相除的意思.基本没有什么坑点. 代码: #inclu ...

  7. bzoj 3012: [Usaco2012 Dec]First! Trie+拓扑排序

    题目大意: 给定n个总长不超过m的互不相同的字符串,现在你可以任意指定字符之间的大小关系.问有多少个串可能成为字典序最小的串,并输出这些串.n <= 30,000 , m <= 300,0 ...

  8. 2017.10.5北京清北综合强化班DAY5

    拼不出的数lost.in/.out/.cpp[问题描述]3 个元素的集合{5, 1,2} 的所有子集的和分别是0,1, 2, 3, 5, 6, 7, 8.发现最小的不能由该集合子集拼出的数字是4.现在 ...

  9. Operating System-Thread(1)What and Why Thread &&进程和线程的对比

    开始线程(Thread)之旅,作为程序员,打交道更多的是线程,各种多线程程序,并行编程都是以线程为基础进行的.本文主要内容: What and Why Thread 进程和线程的对比 一.What a ...

  10. Maven(2)-坐标和依赖

    本文简要介绍Maven里面的坐标(coodinate)以及maven依赖管理(Dependency) 一.坐标 先来个截图: 在上图peoject栏目有groupId,artifactId,versi ...