34.Collections

        ArrayList<String> strings = new ArrayList<String>();
        strings.add("aa");
        strings.add("dd");
        strings.add("cc");
        strings.add("ee");
        System.out.println(strings);
        Collections.sort(strings);
        System.out.println(strings);
        Collections.reverse(strings);
        System.out.println(strings);
        Collections.shuffle(strings);
        System.out.println(strings);
[aa, dd, cc, ee]
[aa, cc, dd, ee]
[ee, dd, cc, aa]
[cc, ee, aa, dd]

案例1:学生排序

    public static void main(String[] args) {
        ArrayList<Student> students = new ArrayList<Student>();
        Student student1 = new Student("张三", 18);
        Student student2 = new Student("李四", 19);
        Student student3 = new Student("王二", 29);
        Student student4 = new Student("麻子", 17);
        Student student5 = new Student("赵柳", 26);
        students.add(student1);
        students.add(student2);
        students.add(student3);
        students.add(student4);
        students.add(student5);
        Collections.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                int ageRet = s1.getAge() - s2.getAge();
                int resault = ageRet == 0 ? s1.getName().compareTo(s2.getName()) : ageRet;
                return resault;
            }
        });
        for (Student s : students) {
            System.out.println(s);
        }
    }

 案例2:斗地主

public static void main(String[] args) {
        //1.创建扑克牌盒
        ArrayList<String> strings = new ArrayList<>();
//        分析扑克牌组成
        /**
         * ♥2,♥3,♥4,♥5,♥6,.....♥K,♥A
         * ♠2,......
         * ♦2,.........(fangpian)
         * ♣2,.....
         * 大王,小王
         */
        //定义数组存放不同花色
        String[] huase = {"♥", "♠", "♦", "♣"};
        //定义数组存放牌号
        String[] pai = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};

        for (String s : huase) {

            for (String num : pai) {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.append(s).append(num);
                strings.add(stringBuilder.toString());

            }

        }
        strings.add("大王");
        strings.add("小王");
        // 洗牌  将扑克牌打乱
        Collections.shuffle(strings);
        //创建三个玩家和底牌数组
        ArrayList<String> wangjia1 = new ArrayList<>();
        ArrayList<String> wangjia2 = new ArrayList<>();
        ArrayList<String> wangjia3 = new ArrayList<>();
        ArrayList<String> dipai = new ArrayList<>();
        //将扑克牌分配给三个玩家
        for (int i = 0; i < strings.size(); i++) {
            if (i >= strings.size() - 3) {
                dipai.add(strings.get(i));
            } else {
                int num = i % 3;
                switch (num) {
                    case 0:
                        wangjia1.add(strings.get(i));
                        break;
                    case 1:
                        wangjia2.add(strings.get(i));
                        break;
                    case 2:
                        wangjia3.add(strings.get(i));
                        break;
                }
            }

        }
        Collections.sort(wangjia1);
        System.out.println(wangjia1);
        System.out.println(wangjia2);
        System.out.println(wangjia3);
        System.out.println(dipai);
    }

 

斗地主升级版:

要求看牌的时候牌是从小到大排序好的:

 

 

 

 

    public static void main(String[] args) {

        //定义数组存放不同花色
        String[] huase = {"♥", "♠", "♦", "♣"};
        //定义数组存放牌号
        String[] pai = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};

        //定义带索引的牌盒
        HashMap<Integer, String> hashMap = new HashMap<>();
        //向牌盒里面按照牌的大小存牌
        int i = 0;
        for (String num : pai) {
            for (String s : huase) {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.append(s).append(num);
                hashMap.put(i, stringBuilder.toString());
                i++;
            }
        }
        hashMap.put(i, "小王");
        hashMap.put(++i, "大王");
        //获取扑克牌索引集合并打乱
        Set<Integer> set = hashMap.keySet();
        ArrayList<Integer> keys = new ArrayList<>();
        for (Integer key : set) {
            keys.add(key);
        }
        Collections.shuffle(keys);
        //将打乱的索引分配到三个玩家和底牌中(为了保证集合是排序的,我们使用了TreeSet)
        TreeSet<Integer> wangjia1 = new TreeSet<Integer>();
        TreeSet<Integer> wangjia2 = new TreeSet<Integer>();
        TreeSet<Integer> wangjia3 = new TreeSet<Integer>();
        TreeSet<Integer> dipai = new TreeSet<Integer>();
        for (int a = 0; a < keys.size(); a++) {
            if (a >= keys.size() - 3) {
                dipai.add(keys.get(a));
            } else {
                if (a % 3 == 0) {
                    wangjia1.add(keys.get(a));
                } else if (a % 3 == 1) {
                    wangjia2.add(keys.get(a));
                } else if (a % 3 == 2) {
                    wangjia3.add(keys.get(a));
                }

            }
        }
        System.out.println("玩家1的牌:" + getPai(hashMap, wangjia1));
        System.out.println("玩家2的牌:" + getPai(hashMap, wangjia2));
        System.out.println("玩家3的牌:" + getPai(hashMap, wangjia3));
        System.out.println("底牌:" + getPai(hashMap, dipai));

    }

    //创建方法根据传进来索引数组返回对应的扑克牌字符串集合

    public static ArrayList<String> getPai(HashMap<Integer, String> hashMap, TreeSet<Integer> set) {
        ArrayList<String> strings = new ArrayList<>();
        for (Integer i : set) {
            strings.add(hashMap.get(i));
        }
        return strings;
    }

 

posted @ 2020-06-21 09:11  指尖下的世界  阅读(216)  评论(0编辑  收藏  举报
/* 看板娘 */ /*炸泡*/
/* 鼠标点击求赞文字特效 */