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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
* 使用Map集合进行模拟斗地主发牌,要求输出的牌是有顺序的
* 分析:
* 1,定义一副牌
*                 String[] arr = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
                String[] color = {"♠","♥","♣","♦"};
        2,定义一个TreeMap集合,一个计数器count = 0和一个ArrayList集合;
        3,使用for嵌套循环,外循环为arr.length,内循环为color.length
        4,将两个字符串拼接成一个新字符串,将计数器作为TreeMap集合的键,这个新的字符串作为集合的值添加到集合中,每添加一个数据,ArrayList添加计数器一次,count++;
        5,向集合中添加大小王,并且集合ArrayList添加两次count,而count只增加一次
        6,洗牌     使用Collections工具类对集合ArrayList中的元素进行不定位置的排序;
        7,创建四个TreeSet集合,为了看牌的时候,牌的大小按照大小来排序
        8,定义一个方法将牌添加到四个TreeSet集合中,参数列表为:TreeMap<Integer , String> tm,ArrayList<Integer> list
*/
package com.heima.斗地主;

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

public class Demo2_Map {
        public static void main(String[] args) {
                // 1,定义一副牌
                String[] arr = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
                String[] color = {"♠","♥","♣","♦"};
                //2,定义一个TreeMap集合,一个计数器count = 0和一个ArrayList集合;
                TreeMap<Integer, String> tm = new TreeMap<>();
                ArrayList<Integer> list = new ArrayList<>();
                int count = 0;
                //3,使用for嵌套循环,外循环为arr.length,内循环为color.length
                for (int i = 0; i < arr.length; i++) {
                        for (int j = 0; j < color.length; j++) {
                                String s = color[j].concat(arr[i]);
                                //4,将两个字符串拼接成一个新字符串,将计数器作为TreeMap集合的键,这个新的字符串作为集合的值添加到集合中,每添加一个数据,ArrayList添加计数器一次,count++;
                                tm.put(count, s);
                                list.add(count);
                                count++;
                        }
                }
                //5,向集合中添加大小王,并且集合ArrayList添加两次count,而count只增加一次
                tm.put(count, "小王");
                list.add(count);
                count++;
                tm.put(count, "大王");
                list.add(count);
                //6,洗牌     使用Collections工具类对集合ArrayList中的元素进行不定位置的排序;
                Collections.shuffle(list);
       
                //7,创建四个TreeSet集合,为了看牌的时候,牌的大小按照大小来排序
                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) {
                                底牌.add(list.get(i));
                        }else if (i % 3 == 0) {
                                周瑜.add(list.get(i));
                        }else if (i % 3 == 1) {
                                刘备.add(list.get(i));
                        }else {
                                曹操.add(list.get(i));
                        }
                }
                //8,定义一个方法将牌添加到四个TreeSet集合中,参数列表为:TreeMap<Integer , String> tm,TreeSet<String> ts ,String name
                addElements(tm,底牌,"底牌");
                addElements(tm,周瑜,"周瑜");
                addElements(tm,刘备,"刘备");
                addElements(tm,曹操,"曹操");
        }
       
        //将数据添加到三个人的集合和底牌的集合中方法
        public static void addElements(TreeMap<Integer, String> tm,
                TreeSet<Integer> ts,String name) {
                System.out.print(name + "的牌为:[ ");
                for(int i : ts) {
                        System.out.print(tm.get(i) + " ");
                }
               
                //TreeSet集合没有索引的,索引不能使用以下这种方法,可以使用增强for或者使用迭代器来遍历
                /*for (int i = 0; i < ts.size(); i++) {
                        if (i == ts.size() - 1) {
                                System.out.print(tm.get(ts.get) + "]");
                        }else {
                                System.out.print(tm.get(i) + ", ");
                        }
                }*/
                System.out.println("]");
        }
       
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马