17-05 Java语言基础(Collections类的常用功能)

Collection集合中的常用方法

public static <T> void sort(List<T> list)
public static <T> int binarySearch(List<?> list, T key)
public static <T> T max(Collection<?> coll)
public static void reverse<List<?> list>
public static void shuffle(List<?> list)

斗地主!

代码:

package com.xiaoxin.test;

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

public class Demo2_Test {
	
	public static void main(String[] args) {
		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) {
				list.add(index);
				hm.put(index++, s2.concat(s1));
			}
		}
		//将大小王添加到双列集合中
		hm.put(index, "小王");
		list.add(index);
		hm.put(++index, "大王");
		list.add(index);
		
		//2、洗牌
		Collections.shuffle(list);
		
		//3、发牌
		TreeSet<Integer> gaojin = new TreeSet<>();
		TreeSet<Integer> huowu = new TreeSet<>();
		TreeSet<Integer> me = new TreeSet<>();
		TreeSet<Integer> dipai = new TreeSet<>();
		for(int i = 0; i < list.size(); i++) {
			if(i >= 51) {
				dipai.add(list.get(i));
			}else if(i % 3 == 0) {
				gaojin.add(list.get(i));
			}else if(i % 3 == 1) {
				huowu.add(list.get(i));
			}else if(i % 3 == 2) {
				me.add(list.get(i));
			}
		}
		
		//看牌
		lookPoker(gaojin, hm);
		lookPoker(huowu, hm);
		lookPoker(me, hm);
		lookPoker(dipai, hm);
	}
	
	public static void lookPoker(TreeSet<Integer> ts, HashMap<Integer, String> hm) {
		for(Integer index : ts) {
			System.out.print(hm.get(index) + " ");
		}
		System.out.println();
	}
}

输出:

方片3 方片4 红桃5 黑桃5 红桃6 方片7 梅花7 黑桃8 红桃9 黑桃9 方片10 红桃Q 黑桃Q 方片Q 红桃K 红桃2 大王 
红桃3 梅花4 梅花5 黑桃7 红桃8 梅花8 方片9 梅花9 黑桃J 梅花Q 梅花K 红桃A 黑桃A 方片A 梅花A 黑桃2 梅花2 
黑桃3 梅花3 红桃4 黑桃4 方片5 黑桃6 方片6 梅花6 红桃7 红桃10 黑桃10 梅花10 红桃J 方片J 梅花J 方片K 小王 
方片8 黑桃K 方片2 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值