1. 程式人生 > 其它 >好玩的撲克發牌器 Collections.sort()的妙用

好玩的撲克發牌器 Collections.sort()的妙用

技術標籤:學習筆記java

import java.util.ArrayList;
import java.util.Collections;


public class DouDiZhuDemo {
    public static void main(String[] args) {
        //準備牌
        String[] flowers = {"♠", "♥", "♣", "♦"};
        String[] numbers = {"3", "4"
, "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"}; //組合 ArrayList<String> box = new ArrayList<>(); for (String flower : flowers) { for (String number :
numbers) { String poke = flower + number; box.add(poke); } } box.add("joker"); box.add("JOKER"); box.add("賴子"); //System.out.println("box = " + box); //洗牌 Collections工具類中 傻否 shuffle
Collections.shuffle(box); //發牌 //準備四個牌搭子 ArrayList<String> 地主牌 = new ArrayList<>(); ArrayList<String> 周潤發 = new ArrayList<>(); ArrayList<String> 周星馳 = new ArrayList<>(); ArrayList<String> 劉德華 = new ArrayList<>(); //率先發四張地主牌 地主牌.add(box.get(box.size() - 1)); 地主牌.add(box.get(box.size() - 2)); 地主牌.add(box.get(box.size() - 3)); 地主牌.add(box.get(box.size() - 4)); for (int i = 0; i < box.size() - 4; i++) { if (i % 3 == 0) { 周潤發.add(box.get(i)); } if (i % 3 == 1) { 周星馳.add(box.get(i)); } if (i % 3 == 2) { 劉德華.add(box.get(i)); } } //排序類 OrderDemo OrderDemo od = new OrderDemo(); //排序 Collections.sort(周潤發, od); Collections.sort(周星馳, od); Collections.sort(劉德華, od); Collections.sort(地主牌, od); //看牌 System.out.println("周潤發 = " + 周潤發); System.out.println("周星馳 = " + 周星馳); System.out.println("劉德華 = " + 劉德華); System.out.println("地主牌 = " + 地主牌); } }
import java.util.Comparator;
import java.util.List;

public class OrderDemo implements Comparator<String> {

    //3,4,5,6,7,8,9,1,J,Q,K,A,2,o,O,子
    //偷樑換柱
    //快速新增集合元素的方法 List介面下有 靜態of方法,但是這種方法建立的集合物件不可變
    List<String> order = List.of("3", "4", "5", "6", "7", "8", "9", "1", "J", "Q", "K", "A", "2", "o", "O", "子");


    //o1 和 o2 代表的是牌 ♣3 ♥K
    @Override
    public int compare(String o1, String o2) {
        //獲取字串中第二個字元
        char c1 = o1.charAt(1);
        char c2 = o2.charAt(1);
        //在序列集合中找到這個字元對應的索引位置
        int i1 = order.indexOf(c1 + "");
        int i2 = order.indexOf(c2 + "");
        return i1 - i2;
    }
}

在這裡插入圖片描述