第一种方式没有实现牌的常规排序。
思路见代码
1 public static void main(String[] args) { 2 //创建一个牌盒子 3 List<String> list = new ArrayList<>(); 4 String[] hs = {"?", "?", "?", "?"}; 5 String[] z = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"}; 6 String[] w = {"大王", "小王"}; 7 for (int i = 0; i < hs.length; i++) { 8 for (int j = 0; j < z.length; j++) { 9 list.add(hs[i] + z[j]); 10 } 11 } 12 for (int i = 0; i < w.length; i++) { 13 list.add(w[i]); 14 } 15 //System.out.println(list); 16 17 //模拟洗牌的过程 18 Collections.shuffle(list); 19 // System.out.println(list); 20 List<String> G = new ArrayList<>(); 21 List<String> C = new ArrayList<>(); 22 List<String> T = new ArrayList<>(); 23 List<String> DP = new ArrayList<>(); 24 //模拟发牌 25 for (int i = 0; i < list.size(); i++) { 26 if (i < 3) { 27 DP.add(list.get(i)); 28 } else if (i % 3 == 0) { 29 G.add(list.get(i)); 30 } else if (i % 3 == 1) { 31 C.add(list.get(i)); 32 } else if (i % 3 == 2) { 33 T.add(list.get(i)); 34 } 35 } 36 37 //看牌 38 System.out.println(LookPoker(G, "高帅")); 39 System.out.println(LookPoker(C, "蔡鹏瑞")); 40 System.out.println(LookPoker(T, "田永平")); 41 System.out.println(LookPoker(DP, "底牌")); 42 43 } 44 45 public static String LookPoker(List<String> list, String name) { 46 System.out.print(name + "的牌是:"); 47 StringBuilder s = new StringBuilder(); 48 s.append("["); 49 for (int i = 0; i < list.size(); i++) { 50 if (i != list.size() - 1) { 51 s.append(list.get(i)).append(", "); 52 } else { 53 s.append(list.get(i)).append("]"); 54 } 55 } 56 57 return s.toString(); 58 }
思路:
1. 用hashMap存储(Interger,String)存储的是,牌号(0-53)表示,value是对应的真实牌
2. 用一个list存储牌号(0-53),模拟洗牌的时候实质是洗牌号。
3. 发牌,每个人的牌用一个TreeSet存储,会实现自动排序
public static void main(String[] args) { //存放一副完整的扑克牌 Map<Integer, String> map = new HashMap<>(); //存放map中的索引,洗牌的时候实质是在洗索引,方便之后用TreeSet排序。 List<Integer> list = new ArrayList<>(); String[] colors = {"?", "?", "?", "?"}; String[] number = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"}; Integer k = 0; for (int i = 0; i < number.length; i++) { for (int j = 0; j < colors.length; j++) { map.put(k, colors[j] + number[i]); list.add(k); k++; } } map.put(k, "小王"); list.add(k); list.add(k + 1); map.put(k + 1, "大王"); //System.out.println(map); //模拟洗牌过程 Collections.shuffle(list); TreeSet<Integer> G = new TreeSet<>(); TreeSet<Integer> T = new TreeSet<>(); TreeSet<Integer> C = new TreeSet<>(); TreeSet<Integer> DP = new TreeSet<>(); for (int i = 0; i < list.size(); i++) { if (i > list.size() - 4) { DP.add(list.get(i)); } else if (i % 3 == 0) { G.add(list.get(i)); } else if (i % 3 == 1) { T.add(list.get(i)); } else if (i % 3 == 2) { C.add(list.get(i)); } } LookPoker(G, "高帅", map); LookPoker(T, "田永平", map); LookPoker(C, "蔡鹏瑞", map); LookPoker(DP, "底牌", map); } public static void LookPoker(TreeSet<Integer> TreeSet, String name, Map<Integer, String> map) { System.out.print(name + "的牌是:"); for (Integer integer : TreeSet) { System.out.print(map.get(integer) + " "); } System.out.println(); }
原文:https://www.cnblogs.com/g414056667/p/14695751.html