利用ArrayList,HashMap,TreeSet,Collections模拟斗地主洗牌和发牌

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

/*
 * 思路:
 * 		A:创建HashMap集合(存储编号,并存储对应牌)
 * 
 * 		B:创建一个ArrayList集合(存储编号)
 * 
 * 		C:创建花色数组和点数数组 
 * 
 * 		D:从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号
 * 
 * 		E:洗牌(洗的是编号),也就是ArrayList
 * 
 * 		F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
 * 
 * 		G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌
 */

public class NewPokerDemo {
	public static void main(String[] args) {
		// 创建HashMap集合(存储编号,并存储对应牌)(键:编号 值:牌)
		HashMap hm = new HashMap();

		// 创建一个ArrayList集合(存储编号)
		ArrayList list = new ArrayList();

		// 创建花色数组和点数数组
		String[] colors = { "♠", "♥", "♣", "♦" };
		// 因为3是最小的,所以从3开始存
		String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",
				"K", "A", "2" };

		// 从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号
		int index = 0;
		for (String num : numbers) {
			for (String color : colors) {
				// 字符串拼接 color拼接num
				String poker = color.concat(num);
				hm.put(index, poker);
				list.add(index);
				index++;
			}
		}
		// 别忘了大王和小王
		hm.put(index, "小王");
		list.add(index);
		index++;
		hm.put(index, "大王");
		list.add(index);

		// 洗牌
		Collections.shuffle(list);

		// 发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
		TreeSet player1 = new TreeSet();
		TreeSet player2 = new TreeSet();
		TreeSet player3 = new TreeSet();
		TreeSet 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) {
				player1.add(list.get(i));
			} else if (i % 3 == 1) {
				player2.add(list.get(i));
			} else {
				player3.add(list.get(i));
			}
		}

		// 看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
		look("player1", player1, hm);
		look("player2", player2, hm);
		look("player3", player3, hm);
		look("dipai", dipai, hm);
	}

	// 看牌功能
	// 遍历TreeSet集合,获取编号,到HashMap集合找对应的牌
	public static void look(String name, TreeSet ts,
			HashMap hm) {
		System.out.print(name + "的牌是:");
		for (Integer key : ts) {
			String value = hm.get(key);
			System.out.print(value + " ");
		}
		System.out.println();

	}
}

效果:

利用ArrayList,HashMap,TreeSet,Collections模拟斗地主洗牌和发牌_第1张图片

你可能感兴趣的:(集合)