效果图
![](https://img-blog.csdnimg.cn/1ced9f7af1b34204b122a45472e4755e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVOS9leW_heW9k-WInQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
源代码
import javax.swing.plaf.ListUI;
import java.util.*;
/**
* 斗地主发牌有序案例:
* 1.准备牌
* 2.洗牌
* 3.发牌
* 4.排序
* 5.看牌
*/
public class DouDiZhu02 {
public static void main(String[] args) {
//1.准备牌
//创建一个Map集合,存储牌的索引和组装好的牌
HashMap<Integer,String> poker = new HashMap<>();
//创建一个List集合,存储牌的索引
ArrayList<Integer> pokerIndex = new ArrayList<>();
//定义两个数组,存储花色和牌的序号
String[] colors = {"♠","♥","♣","♦"};
String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
//从0开始存索引,并往Map里存储对应的牌,同时往ArrayList里存牌的索引
int index = 0;
//存大小王
poker.put(index,"大王");
pokerIndex.add(index);
index++;
poker.put(index,"小王");
pokerIndex.add(index);
index++;
//将牌存进相应的集合里
for(String number : numbers){
for(String color : colors){
poker.put(index,color+number);
pokerIndex.add(index);
index++;
}
}
//洗牌
Collections.shuffle(pokerIndex);
//发牌,发的是索引,为了让索引是排序的,创建TreeSet接收
TreeSet<Integer> player01 = new TreeSet<>();
TreeSet<Integer> player02 = new TreeSet<>();
TreeSet<Integer> player03 = new TreeSet<>();
TreeSet<Integer> dipai = new TreeSet<>();
for(int i = 0;i < pokerIndex.size(); i++) {
int sum = pokerIndex.get(i);
if (i >= pokerIndex.size() - 3) {
dipai.add(sum);
} else if (i % 3 == 0) {
player01.add(sum);
} else if (i % 3 == 1) {
player02.add(sum);
} else if (i % 3 == 2) {
player03.add(sum);
}
}
lookPoker("玩家一",player01,poker );
lookPoker("玩家二",player02,poker);
lookPoker("玩家三",player03,poker);
lookPoker("底牌",dipai,poker);
}
//看牌的方法
public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String> hm){
System.out.println(name+"的牌是-> ");
for(Integer key : ts){
String pooker = hm.get(key);
System.out.print(pooker+" ");
}
System.out.println();
}
}