家主のJAVAインスタンス(LinkedHashMapに基づくカードの自動ソート)

家主のJAVAインスタンス(LinkedHashMapに基づくカードの自動ソート)

コード

package com.Map;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Set;
public class doudizhu {
    
    
    public static void main(String[] args) {
    
    
        //准备牌
        LinkedHashMap<Integer,String> hash = new LinkedHashMap<>();
        ArrayList<String> color = new ArrayList<>();
        ArrayList<String> num   = new ArrayList<>();
        ArrayList<String> sum   = new ArrayList<>();
        Collections.addAll(color,"♥","♠","♣","♦");
        Collections.addAll(num,"2","A","K","Q","J","10","9","8","7","6","5","4","3");
        for (String n : num) {
    
    
            for (String col: color) {
    
    
                sum.add(col+n);
            }
        }
        int count = 0;
        hash.put(count++,"大王");
        hash.put(count++,"小王");
        for (String s : sum) {
    
    
            hash.put(count++,s);
        }
//        System.out.println(hash);此为按序列排序的牌
        //洗牌

        Set<Integer> set = hash.keySet();//先获取关键值集合
        ArrayList<Integer> arr = new ArrayList<>();//再将集合转化为List
        arr.addAll(set);
        Collections.shuffle(arr);//shuffle方法只适合于List接口

        //发牌
        ArrayList<Integer> per1 = new ArrayList<>();
        ArrayList<Integer> per2 = new ArrayList<>();
        ArrayList<Integer> per3 = new ArrayList<>();
        ArrayList<Integer> rest = new ArrayList<>();//存放的皆为关键值
        for (int i = 0; i < 51; i++) {
    
    
            if(i%3==0)
                per1.add(arr.get(i));
            else if(i%3==1)
                per2.add(arr.get(i));
            else
                per3.add(arr.get(i));
        }
        rest.add(arr.get(51));
        rest.add(arr.get(52));
        rest.add(arr.get(53));
        Collections.sort(per1);
        Collections.sort(per2);
        Collections.sort(per3);
        Collections.sort(rest);//按关键值进行排序

        //转换为value值
        ArrayList<String> pai1 = new ArrayList<>();
        ArrayList<String> pai2 = new ArrayList<>();
        ArrayList<String> pai3 = new ArrayList<>();
        ArrayList<String> pairest = new ArrayList<>();
        for (Integer p1 : per1) {
    
    
            pai1.add(hash.get(p1));
        }
        for (Integer p2 : per2) {
    
    
            pai2.add(hash.get(p2));
        }
        for (Integer p3 : per3) {
    
    
            pai3.add(hash.get(p3));
        }
        for (Integer p4 : rest) {
    
    
            pairest.add(hash.get(p4));
        }
        System.out.println("第一个人的牌 :"+pai1);
        System.out.println("第二个人的牌 :"+pai2);
        System.out.println("第三个人的牌 :"+pai3);
        System.out.println("底牌 :"+pairest);
}}

結果(そのうちの1つ)

第一个人的牌 :[大王,2, ♠A, ♥Q, ♠Q, ♣Q, ♥J, ♦J,8,7,7,6,5,5,4,4,3]
第二个人的牌 :[2, ♦A, ♦K, ♦Q, ♠J,10,10,10,9,9,9,7,7,6,6,4,3]
第三个人的牌 :[小王,2, ♥K, ♠K, ♣K, ♣J,10,9,8,8,8,6,5,5,4,3,3]
底牌 :[2, ♥A, ♣A]

Process finished with exit code 0

おすすめ

転載: blog.csdn.net/TOPic666/article/details/107839779