A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 青火 中级黑马   /  2016-9-5 23:54  /  922 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 青火 于 2016-9-5 23:55 编辑

[Java] 纯文本查看 复制代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class Test3 {

        /**
         * * A:案例演示
         * 模拟斗地主洗牌和发牌并对牌进行排序的代码实现
         * 
         *  分析:
         * 1,买一副扑克,其实就是自己创建一个集合对象,将扑克牌存储进去
         * 2,洗牌
         * 3,发牌
         * 4,看牌
         */
        public static void main(String[] args) {
                //1,买一副扑克,其实就是自己创建一个集合对象,将扑克牌存储进去
                String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
                String[] color = {"方片","梅花","红桃","黑桃"};
                HashMap<Integer, String> hm = new HashMap<>();                                        //存储索引和扑克牌
                ArrayList<Integer> list = new ArrayList<>();                                        //存储索引
                int index = 0;
                
                //拼接扑克牌并索引和扑克牌存储在hm中
                for(String s1 : num) {                                                                                        //获取数字
                        for(String s2 : color) {                                                                        //获取颜色
                                hm.put(index, s2.concat(s1));
                                list.add(index);                                                                                //将索引0到51添加到list集合中
                                index++;
                        }
                }
                //将小王添加到双列集合中
                hm.put(index, "小王");
                list.add(index);                                                                                                //将52索引添加到集合中
                index++;
                hm.put(index, "大王");
                list.add(index);                                                                                                //将52索引添加到集合中
                
                //2,洗牌
                Collections.shuffle(list);
                //3,发牌
                TreeSet<Integer> gaojin = new TreeSet<>();
                TreeSet<Integer> longwu = new TreeSet<>();
                TreeSet<Integer> me = new TreeSet<>();
                TreeSet<Integer> dipai = new TreeSet<>();
                
                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, "底牌");
        }
        /*
         * 看牌
         * 1,返回值类型void
         * 2,参数列表HashMap,TreeSet,String name
         */
        public static void lookPoker(HashMap<Integer, String> hm,TreeSet<Integer> ts ,String name) {
                System.out.print(name + "的牌是:");
                for(Integer i : ts) {                                                //i代表双列集合中的每一个键
                        System.out.print(hm.get(i) + " ");
                }
                System.out.println();
        }
}

17 个回复

倒序浏览
黑马币不好赚啊
回复 使用道具 举报
技术分更不好赚啊 只能曲线救国了
回复 使用道具 举报
赢无翳 发表于 2016-9-6 00:00
技术分更不好赚啊 只能曲线救国了

你的分都比我多啦
回复 使用道具 举报
广州50期java基础班的?
回复 使用道具 举报
这代码,一个很综合的例子,虽然看起来可能有些复杂,但是其实就是把集合中学的知识综合了一下,一个很不错的案例
回复 使用道具 举报
你这分挺多啊
回复 使用道具 举报
你这可以修改下,介意考虑抽取地主的过程
回复 使用道具 举报
主要使用的是集合相关的知识
回复 使用道具 举报
我来凑热闹
回复 使用道具 举报
怎样的贴才有技术分啊或黑马币
回复 使用道具 举报
黑马币不好赚
回复 使用道具 举报
这个看起来挺不错的,找的对象很哈哈哈
回复 使用道具 举报
Lws 初级黑马 2016-9-6 18:03:03
14#
这个例子很经典,学习了
回复 使用道具 举报
集合综合代码,不错的,可以更快的理解集合熟练集合
回复 使用道具 举报
继续努力~~~~
回复 使用道具 举报
很强势,6666
回复 使用道具 举报
我们今天也学了,很经典的案例,看的代码多的头有点晕
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马