时间: 2020-11-22|55次围观|0 条评论

 

 

 

》HashMap 的key底层数据结构是哈希表

》ArrayList 底层数据结构是数组,查询快,增删慢

》TreeSet  底层数据结构式红黑树(平衡二叉树),默认构造器采用自然排序(Integer已经实现了Comparable接口 )。

 

 

集合练习 之 斗地主发牌插图

package cn.itcast.day18;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
/*
 * 斗地主 发牌程序
 * 
 * A:创建HashMap<Integer,String>用于存放装牌号和牌。
 * B: 创建花色数组,创建点数数组(3最小)
 * B:创建ArrayList用于存放牌号
 * C: 把牌号和牌放到对应的HashMap中,同时把牌号放到ArrayList中
 * C:洗牌(洗牌号)
 * D: 发牌,遍历ArrayList中的牌号,去HashMap中招对应的牌,用TreeSet存放牌.
 * E: 遍历每一个TreeSet得到对应人的牌
 */
public class PokerDemo {

    public static void main(String[] args) {
        //创建牌核
        HashMap<Integer,String> hm=new HashMap<Integer,String>();
        
        //创建牌号盒
        ArrayList<Integer> array=new ArrayList<Integer>();
        
        
        //创建花色数组
         String[] colors={"","","",""};
        //创建点数数组 
         String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
         
         //把牌号和牌存入HashMap,把牌号存入ArrayList中
         int index=0;
         for(String number:numbers){
             for(String color:colors){
                 String s=color.concat(number);
                 hm.put(index,s);
                 array.add(index);
                 index++;
             }
         }
         hm.put(index, "大王");
         array.add(index);
         index++;
         hm.put(index, "小王");
         array.add(index);
         
         //洗牌
         Collections.shuffle(array);
         
         //发牌时用TreeSet存放
         TreeSet<Integer> sunWuKong=new TreeSet<Integer>();
         TreeSet<Integer> zhuBaJie=new TreeSet<Integer>();
         TreeSet<Integer> shaHeShang=new TreeSet<Integer>();
         TreeSet<Integer> diPai=new TreeSet<Integer>();
         
         //遍历洗过的牌号集合ArrayList,并发牌号
        for(Integer i:array){
            if(array.size()-i<=3){
                diPai.add(i);
            }else if(i%3==2){
                sunWuKong.add(i);
            }else if(i%3==1){
                zhuBaJie.add(i);
            }else if(i%3==0){
                shaHeShang.add(i);
            }
        }
        lookPoker("孙悟空",sunWuKong,hm);
        lookPoker("猪八戒",zhuBaJie,hm);
        lookPoker("沙和尚",shaHeShang,hm);
        lookPoker("底牌",diPai,hm);
        
    }
    
    
    public static void lookPoker(String name,TreeSet<Integer> pai,HashMap<Integer,String> hm){
        System.out.print(name+"的牌是 :");
        for(Integer i:pai){
            System.out.print(hm.get(i)+" ");
        }
        System.out.println();
    }

}
/*

孙悟空的牌是 :3 4 5 5 6 7 8 8 9 10 J J Q K A A 2
猪八戒的牌是 :3 4 4 5 6 7 7 8 9 10 10 J Q K K A 2
沙和尚的牌是 :3 3 4 5 6 6 7 8 9 9 10 J Q Q K A 2
底牌的牌是 :2 大王 小王

*/

转载于:https://www.cnblogs.com/qq-757617012/p/4290680.html

原文链接:https://blog.csdn.net/weixin_30342827/article/details/95463607

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《集合练习 之 斗地主发牌
   

还没有人抢沙发呢~