天天看點

Java集合的使用儲存一副撲克牌并洗牌輸出

        學習集合後發現集合比數組要靈活多了,不固定長度可以實時添加删除。實作洗牌的原理很簡單,我這裡用到了随機數,但是怎麼能讓随機内容布重複呢?我建立個A集合,把撲克元素全存進去,然後随機它,随機出一個元素就把這個元素從A中删除,添加到建立的B集合中,然後繼續随機A不斷循環,這樣就能使随機内容不重複了。輸出效果界面如下,由于沒用換号太長就截取了一部分,如果有更好的思路請指出:

Java集合的使用儲存一副撲克牌并洗牌輸出
import java.util.ArrayList;
import java.util.Random;

public class test5 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        String name = "";
        for (int i = 1; i <= 13; i++) {     //儲存一副撲克到集合
            switch (i) {
                case 1:
                    name = "A";
                    break;
                case 11:
                    name = "J";
                    break;
                case 12:
                    name = "Q";
                    break;
                case 13:
                    name = "K";
                    break;
                default:
                    name = String.valueOf(i);
                    break;
            }
            list.add("♡" + name);
            list.add("♦" + name);
            list.add("♠" + name);
            list.add("♣" + name);
        }
        list.add("大\uD83D\uDC7B");
        list.add("小\uD83D\uDC7B");
        poker(list);
    }
    public static void poker(ArrayList list) {
        Random r = new Random();
        ArrayList reList = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            int p = r.nextInt(list.size());       //随機撲克
            reList.add(list.get(p));
            list.remove(p);     //将随機出來的撲克删除,此時list 數目少1
            i--;    //以上條件下i++一直運作會少掉幾乎一半元素,來個i--抵消
        }
        for (int i = 0; i < reList.size(); i++) {
            System.out.print(reList.get(i) + " ");  //輸出随機排序的撲克牌
        }
    }
}