shuffle(arryBox);
方法重新整理集合中的順序public class Main { public static void main(String[] args) { // 1. 準備牌 String[] arr1 = { "黑桃", "紅桃", "方片", "梅花" }; String[] arr2 = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; List<String> arryBox = new ArrayList<>(); for (int i = 0; i < arr1.length; i++) { for (int j = 0; j < arr2.length; j++) { arryBox.add(arr1[i] + arr2[j]); } } arryBox.add("大王"); arryBox.add("小王"); // 3個人鬥地主,分別為 zhangsan、lisi、wangwu List<String> zhangsan = new ArrayList<>(); List<String> lisi = new ArrayList<>(); List<String> wangwu = new ArrayList<>(); // 2. 洗牌 Collections.shuffle(arryBox); // 3. 發牌 for (int i = 0; i < arryBox.size() - 3; i++) { if (i % 3 == 0) { zhangsan.add(arryBox.get(i)); } else if (i % 3 == 1) { lisi.add(arryBox.get(i)); } else if (i % 3 == 2) { wangwu.add(arryBox.get(i)); } } // 4. 看牌 pushBoss(); System.out.println("張三:" + zhangsan); System.out.println("李四:" + lisi); System.out.println("王五:" + wangwu); System.out.print("底牌:["); for (int i = 1; i < 4; i++) { System.out.print(arryBox.get(arryBox.size() - i)); if (i < 3) { System.out.print(","); } } System.out.print("]"); } /** 隨機地主 */ public static void pushBoss() { List<String> players = new ArrayList<String>(); players.add("張三"); players.add("李四"); players.add("王五"); Random r = new Random(); int bossIndex = r.nextInt(3); String boss = players.get(bossIndex); System.out.println("此局地主是:" + boss); } }執行上面程式,輸出結果為:
此局地主是:李四
張三: [梅花10, 方片2, 方片K, 方片J, 方片5, 黑桃6, 黑桃10, 紅桃3, 梅花3, 黑桃2, 梅花8, 黑桃A, 紅桃J, 梅花9, 紅桃K, 方片9, 梅花Q]
李四: [紅桃4, 黑桃8, 方片8, 方片3, 紅桃2, 紅桃6, 紅桃5, 黑桃3, 黑桃4, 梅花7, 方片Q, 小王, 紅桃8, 黑桃K, 方片6, 梅花A, 黑桃7]
王五: [方片4, 梅花4, 方片7, 黑桃5, 黑桃9, 紅桃10, 梅花K, 方片A, 紅桃Q, 黑桃J, 梅花2, 大王, 方片10, 紅桃A, 梅花J, 梅花5, 紅桃7]
底牌:[梅花6,紅桃9,黑桃Q]
public class Main2 { public static void main(String[] args) { // 1.準備牌 String[] arr1 = { "黑桃", "紅桃", "方片", "梅花" }; String[] arr2 = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; // 定義Map集合用來存放索引和牌 HashMap<Integer, String> pokerMap = new HashMap<>(); // 定義List集合儲存索引(索引為0-53) List<Integer> indexList = new ArrayList<>(); // 定義索引值變數 int index = 0; // 將撲克牌與索引建立對應關係放入Map和List集合中 for (String num : arr2) { for (String color : arr1) { pokerMap.put(index, color + num); indexList.add(index); index++; } } pokerMap.put(index, "小王"); indexList.add(index++); pokerMap.put(index, "大王"); indexList.add(index); // 定義玩家 TreeSet<Integer> zhangsan = new TreeSet<>(); TreeSet<Integer> lisi = new TreeSet<>(); TreeSet<Integer> wangwu = new TreeSet<>(); TreeSet<Integer> buttoms = new TreeSet<>(); // 2. 洗牌 Collections.shuffle(indexList); // 3. 發牌 for (int i = 0; i < indexList.size(); i++) { if (i >= indexList.size() - 3) { buttoms.add(indexList.get(i)); } else if (i % 3 == 0) { zhangsan.add(indexList.get(i)); } else if (i % 3 == 1) { lisi.add(indexList.get(i)); } else { wangwu.add(indexList.get(i)); } } // 4. 看牌 pushBoss(); check(pokerMap, zhangsan, "張三"); check(pokerMap, lisi, "李四"); check(pokerMap, wangwu, "王五"); check(pokerMap, buttoms, "底牌"); } /** * 看牌 * * @param pokerMap * @param player 玩家撲克牌對應索引集合 * @param name 玩家暱稱 */ public static void check(HashMap<Integer, String> pokerMap, TreeSet<Integer> player, String name) { // 檢視手中的牌 System.out.print(name + ":["); for (Integer i : player) { System.out.print(pokerMap.get(i) + " "); } System.out.println("]"); } /** 隨機地主 */ public static void pushBoss() { List<String> players = new ArrayList<String>(); players.add("張三"); players.add("李四"); players.add("王五"); Random r = new Random(); int bossIndex = r.nextInt(3); String boss = players.get(bossIndex); System.out.println("此局地主是:" + boss); } }執行上面程式,輸出結果為:
此局地主是:張三
張三:[方片A 紅桃2 方片2 黑桃4 紅桃4 梅花4 紅桃6 方片6 梅花6 黑桃7 紅桃8 黑桃9 黑桃10 方片J 方片Q 黑桃K 紅桃K ]
李四:[梅花2 黑桃3 紅桃3 方片3 梅花3 紅桃5 方片5 紅桃7 梅花8 紅桃9 梅花9 紅桃10 梅花10 黑桃Q 梅花Q 梅花K 小王 ]
王五:[黑桃A 紅桃A 黑桃2 方片4 黑桃5 黑桃6 方片7 黑桃8 方片8 方片9 方片10 黑桃J 紅桃J 梅花J 紅桃Q 方片K 大王 ]
底牌:[梅花A 梅花5 梅花7 ]