java基础---Map集合斗地主案例

一.需求:
在这里插入图片描述
二.解析:

在这里插入图片描述

三.1.代码:

package com.china;

import java.util.*;
import java.util.stream.Collectors;

public class DouDiZhu {
  public static void main(String[] args) {
    LinkedHashMap<Integer,String> pokers = new LinkedHashMap<>();
    /*“大王”   和“小王”和下面的分开添加  */
    pokers.put(0,"大王");
    pokers.put(1,"小王");
    // 牌的颜色
    String[] symbols = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
    String[] patterns = {"♠", "♥", "♣", "♦"};
    int count = 2;
    for (String symbol : symbols) {//外层循环表示的是包含”数字,字母在内的"符号,每次遍历的时候一个符号都和patterns数组里面在内的所有
      //图案进行拼接,比如 字符“2”和 {"♠", "♥", "♣", "♦"}所有颜色图案进行拼接
      for (String colorPattern : patterns) {
        pokers.put(count,colorPattern+symbol);//数组里面{"♠", "♥", "♣", "♦"}的 所有颜色图案和字符进行拼接
        count++;//无论外层循环还是内层循环都可以count++都要进行没从一开始就进行,一直到外层for循环和内层for()循环都结束的时候才停止增加

      }
    }

    System.out.println(pokers);
  //洗牌,想要洗牌的话就要用shuffle()方法,所以必须要获得list集合,可以通过键找值的方式如keySet()方法来获取
    Set<Integer> keys = pokers.keySet();
    List<Integer> list = new ArrayList<>();
    list.addAll(keys);//这个方法我是一开始没有想到,这个挺重要的
    Collections.shuffle(list);//打乱,该方法只能用shuffle()方式,此时里面的编号key已经打断了
    System.out.println("打乱后的集合是"+list);

    TreeSet<Integer> 张三的牌 = new TreeSet<>();
    TreeSet<Integer> 李四的牌 = new TreeSet<>();
    TreeSet<Integer> 王五的牌 = new TreeSet<>();
    TreeSet<Integer> 底牌的牌 = new TreeSet<>();

    for (int i = 0; i < list.size(); i++) {
      if (i%3==0){
        张三的牌.add(list.get(i));//list.get(i)是打乱后的key,不知道具体是什么编号
      }else if (i%3==1){
        李四的牌.add(list.get(i));//list.get(i)是打乱后的key
      }else {
        王五的牌.add(list.get(i));//list.get(i)是打乱后的key
      }
    }
    底牌的牌.add(list.get(51));
    底牌的牌.add(list.get(52));
    底牌的牌.add(list.get(53));
    System.out.println("赌神的牌对应原来的Map里面的编号是"+张三的牌);
    System.out.println("赌圣的牌对应原来的Map里面的编号是"+李四的牌);
    System.out.println("赌侠的牌对应原来的Map里面的编号是"+王五的牌);
    System.out.println("底牌的牌对应原来的Map里面的编号是"+底牌的牌);

    method(pokers,张三的牌,"张三的牌");
    method(pokers,李四的牌,"李四的牌");
    method(pokers,王五的牌,"王五的牌");
    method(pokers,底牌的牌,"底牌的牌");

  }
  public static void method(LinkedHashMap<Integer,String> pokers,TreeSet<Integer> keys,String s){
    System.out.print(s+": ");
    for (Integer integer : keys) {
      System.out.print(pokers.get(integer)+" ");
    }
    System.out.println();
  }
}

2.打印结果:


E:\360Downloads\jdk1.8\jdk1.8.0_77\bin\java.exe -javaagent:E:\360Downloads\idea\idea2020\lib\idea_rt.jar=58509:E:\360Downloads\idea\idea2020\bin -Dfile.encoding=UTF-8 -classpath E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\charsets.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\deploy.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\access-bridge-64.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\cldrdata.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\dnsns.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\jaccess.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\jfxrt.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\localedata.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\nashorn.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\sunec.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\sunjce_provider.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\sunmscapi.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\sunpkcs11.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\ext\zipfs.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\javaws.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\jce.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\jfr.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\jfxswt.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\jsse.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\management-agent.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\plugin.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\resources.jar;E:\360Downloads\jdk1.8\jdk1.8.0_77\jre\lib\rt.jar;F:\BaiduNetdiskDownload\itcast\study\itheima-163\out\production\day21 com.china.DouDiZhu
{0=大王, 1=小王, 2=2, 3=2, 4=2, 5=2, 6=♠A, 7=♥A, 8=♣A, 9=♦A, 10=♠K, 11=♥K, 12=♣K, 13=♦K, 14=♠Q, 15=♥Q, 16=♣Q, 17=♦Q, 18=♠J, 19=♥J, 20=♣J, 21=♦J, 22=10, 23=10, 24=10, 25=10, 26=9, 27=9, 28=9, 29=9, 30=8, 31=8, 32=8, 33=8, 34=7, 35=7, 36=7, 37=7, 38=6, 39=6, 40=6, 41=6, 42=5, 43=5, 44=5, 45=5, 46=4, 47=4, 48=4, 49=4, 50=3, 51=3, 52=3, 53=3}
打乱后的集合是[30, 51, 20, 10, 39, 12, 38, 21, 36, 1, 53, 41, 28, 23, 48, 46, 37, 9, 4, 6, 42, 2, 17, 50, 19, 26, 18, 44, 8, 13, 0, 14, 32, 24, 15, 31, 47, 3, 16, 25, 35, 11, 49, 45, 34, 7, 22, 5, 43, 40, 52, 33, 27, 29]
赌神的牌对应原来的Map里面的编号是[0, 1, 2, 4, 7, 10, 19, 24, 25, 28, 30, 33, 38, 43, 44, 46, 47, 49]
赌圣的牌对应原来的Map里面的编号是[3, 6, 8, 14, 15, 17, 21, 22, 23, 26, 27, 35, 37, 39, 40, 45, 51, 53]
赌侠的牌对应原来的Map里面的编号是[5, 9, 11, 12, 13, 16, 18, 20, 29, 31, 32, 34, 36, 41, 42, 48, 50, 52]
底牌的牌对应原来的Map里面的编号是[27, 29, 33]
张三的牌: 大王 小王 ♠22 ♥A ♠K ♥J ♣1010988655444 
李四的牌:2 ♠A ♣A ♠Q ♥Q ♦Q ♦J ♠1010997766533 
王五的牌:2 ♦A ♥K ♣K ♦K ♣Q ♠J ♣J ♦9887765433 
底牌的牌:998 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值