/*
* 使用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("]");
}
}
|
|