此为复习java基础集合的斗地主案例(最后有根据牌大小排序的代码)
- 组装扑克牌
- 54张扑克牌装入集合c
- 洗牌(Collections工具类中的shuffle方法,可以随机打乱集合中元素)
- 分发扑克牌给三个玩家和留三张作为底牌
package DouDiZhuDemo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
Collection<String> c = new ArrayList<String>();
String[] color = {"♥","♣","♠","◇"};
String[] num = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
c.add("大王");
c.add("小王");
for(String s : color){
for(String n : num){
c.add(s+n);
}
}
System.out.println(c);
System.out.println(c.size());
Collections.shuffle((List<?>) c);
Collection<String> p1 = new ArrayList<>();
Collection<String> p2 = new ArrayList<>();
Collection<String> p3 = new ArrayList<>();
Collection<String> reserve = new ArrayList<>();
for (int i = 0; i < 54; i++) {
if(i<=50){
if(i % 3 == 0){
p1.add(((ArrayList<String>) c).get(i));
}else if(i % 3 == 1){
p2.add(((ArrayList<String>) c).get(i));
}else if(i %3 == 2){
p3.add(((ArrayList<String>) c).get(i));
}
}else{
reserve.add(((ArrayList<String>) c).get(i));
}
}
System.out.println("欧阳子遥:"+p1);
System.out.println(p1.size());
System.out.println("欧阳耀莹:"+p2);
System.out.println(p2.size());
System.out.println("胡歌:"+p3);
System.out.println(p3.size());
System.out.println("底牌:"+reserve);
System.out.println(reserve.size());
}
}
运行结果:
[大王, 小王, ♥2, ♥A, ♥K, ♥Q, ♥J, ♥10, ♥9, ♥8, ♥7, ♥6, ♥5, ♥4, ♥3, ♣2, ♣A, ♣K, ♣Q, ♣J, ♣10, ♣9, ♣8, ♣7, ♣6, ♣5, ♣4, ♣3, ♠2, ♠A, ♠K, ♠Q, ♠J, ♠10, ♠9, ♠8, ♠7, ♠6, ♠5, ♠4, ♠3, ◇2, ◇A, ◇K, ◇Q, ◇J, ◇10, ◇9, ◇8, ◇7, ◇6, ◇5, ◇4, ◇3]
54
欧阳子遥:[◇K, ◇7, ♥4, ♣3, ♥9, ♣2, ♣8, ♠3, 小王, ♠7, ♥5, ◇10, ◇8, ♥8, ♣9, ♥A, ◇Q]
17
欧阳耀莹:[◇2, ◇5, ♥3, 大王, ♥2, ◇4, ◇6, ♠K, ♣7, ♠4, ♣4, ♥10, ♠9, ◇A, ◇J, ♠10, ♣10]
17
胡歌:[♥7, ♠2, ♠8, ♠Q, ◇9, ◇3, ♠J, ♠5, ♥Q, ♠6, ♥K, ♣K, ♣5, ♣J, ♠A, ♥J, ♣6]
17
底牌:[♥6, ♣Q, ♣A]
3
有排序的代码:
扑克牌花色大小和大小均已在数组中排好序
这个代码的核心思想是把判断牌的大小转移到判断其HashMap的key值,key越小,牌越大。
import java.util.*;
public class JiHeDemo {
public static void main(String[] args) {
HashMap<Integer,String> hm = new HashMap<Integer, String>();
ArrayList<Integer> index = new ArrayList<>();
String[] color = {"♠","♥","♣","◇"};
String[] num = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
hm.put(0,"大王");
index.add(0);
hm.put(1,"小王");
index.add(1);
int count = 1;
for(String n : num) {
for (String s : color) {
hm.put(++count, s + n);
index.add(count);
}
}
// Collections.shuffle(index);
// System.out.println("打乱之后的随机排序"+index);
ArrayList<Integer> p1 = new ArrayList<>();
ArrayList<Integer> p2 = new ArrayList<>();
ArrayList<Integer> p3 = new ArrayList<>();
ArrayList<Integer> reserve = new ArrayList<>();
for (int i = 0; i < 54; i++) {
if(i<=50){
if(i % 3 == 0){
p1.add(index.get(i));
}else if(i % 3 == 1){
p2.add(index.get(i));
}else if(i %3 == 2){
p3.add(index.get(i));
}
}else{
reserve.add(index.get(i));
}
}
// System.out.print(p1.size()+" ");//牌数是否正确
// System.out.print(p2.size()+" ");
// System.out.print(p3.size()+" ");
// System.out.print(reserve.size());
// System.out.println();
Collections.sort(p1);
Collections.sort(p2);
Collections.sort(p3);
Collections.sort(reserve);
// System.out.println("p1 "+p1);验证排序是否正确
// System.out.println("p2 "+p2);
// System.out.println("p3 "+p3);
// System.out.println("reserve "+reserve);
printPai("欧阳耀莹",hm,p1);
printPai("欧阳子遥",hm,p2);
printPai("胡歌",hm,p3);
printPai("底牌",hm,reserve);
}
private static void printPai(String str,HashMap<Integer,String> map,ArrayList<Integer> list) {
System.out.print(str+": ");
for(Integer n : list){
String s = map.get(n);
System.out.print(n+" "+s+" ");
}
System.out.println();
}
}
运行截图: