1.可变参数

一种特殊形参,定义在方法、构造器的形参列表中,格式:数据类型...参数名称

特点:可以不传数据给他,可以同时传一个或多个数据给他;也可以传数组给他。

好处:用来灵活接受数组。

public class test {
    public static void main(String[] args) {
        // 特征
        test(); // 不传数据
        test(10); // 传输一个数据常会给
        test(10, 20, 30); // 传递多个数据常会给它
        test(new int[]{10, 20, 30, 40}); // 传输一个数组给可变参数
    }

    public static void test(int... nums) {
        // 可变参数在方法内部,本质就是一个数组。
        System.out.println(nums.length);
        System.out.println(Arrays.toString(nums));
        System.out.println("-------------------------");
    }
}


集合框架之Collection的前置知识_System

注意事项:

(1)一个形参列表只能有一个可变参数。

(2)可变参数必须放在形参列表的最后面。

2.Collectiongs

不是Collection,是一个操作集合的工具类。

集合框架之Collection的前置知识_List_02

public class test {
    public static void main(String[] args) {
        // 示例1: 使用 addAll 方法
        List<String> list1 = new ArrayList<>();
        Collections.addAll(list1, "A", "B", "C");
        System.out.println("List after addAll: " + list1);

        // 示例2: 使用 shuffle 方法
        Collections.shuffle(list1);
        System.out.println("Shuffled List: " + list1);

        // 示例3: 使用 sort 方法
        List<Integer> list2 = new ArrayList<>();
        list2.add(5);
        list2.add(1);
        list2.add(3);
        Collections.sort(list2);
        System.out.println("Sorted List: " + list2);

        // 示例4: 使用带比较器的 sort 方法
        List<String> list3 = new ArrayList<>();
        list3.add("banana");
        list3.add("apple");
        list3.add("cherry");

        Collections.sort(list3, new Comparator<String>() {// 自定义比较器
            @Override
            public int compare(String a, String b) {
                return b.compareTo(a); // 按降序排序
            }
        });

        System.out.println("Sorted List with Comparator: " + list3);
    }
}

3.综合案例:斗地主

运行

public class test {
    public static void main(String[] args) {
        // 示例1: 使用 addAll 方法
        Room room1 = new Room();
        room1.start();
    }
}

主函数



import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Room {

        // 创建一副54张的扑克牌
        List<Card> allCards = new ArrayList<>();
public Room() {
        // 点数和花色
        String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
        String[] colors = {"♠", "♥", "♦", "♣"};
        int size = 0; // 用于标示牌的大小

        // 组合牌
        for (String number : numbers) {
            size++;
            for (String color : colors) {
                Card c = new Card(number, color, size);
                allCards.add(c);
            }
        }

        // 添加大小王
        Card c1 = new Card("", "小王", ++size);
        Card c2 = new Card("", "大王", ++size);
        Collections.addAll(allCards, c1, c2);

        // 打印所有牌
        System.out.println(allCards);
    }




    public void start() {
        // 1. 洗牌
        Collections.shuffle(allCards);
        System.out.println("洗牌后: " + allCards);

        // 2. 发牌
        List<Card> linHuChong = new ArrayList<>();
        List<Card> jiuMoZhi = new ArrayList<>();
        List<Card> renYingYing = new ArrayList<>();

        for (int i = 0; i < allCards.size(); i++) {
            Card c = allCards.get(i);
            if (i % 3 == 0) {
                linHuChong.add(c);
            } else if (i % 3 == 1) {
                jiuMoZhi.add(c);
            } else {
                renYingYing.add(c);
            }
        }
        sortcards(linHuChong);
        sortcards(jiuMoZhi);
        sortcards(renYingYing);

        // 显示玩家的牌
        System.out.println("林胡冲的牌: " + linHuChong);
        System.out.println("鸠摩智的牌: " + jiuMoZhi);
        System.out.println("任盈盈的牌: " + renYingYing);
        List<Card> lastThreeCards = allCards.subList(allCards.size() - 3, allCards.size());
        System.out.println("最后三张牌: " + lastThreeCards);
        jiuMoZhi.addAll(lastThreeCards);
        sortcards(jiuMoZhi);
        System.out.println("鸠摩智的牌+最后三张牌: " + jiuMoZhi);
    }
        private void sortcards(List<Card> cards) {
                Collections.sort(cards, new Comparator<Card>() {
                    @Override
                    public int compare(Card o1, Card o2) {
                       return o2.getSize()-o1.getSize();//降序
                }

        });

}



}

构造器



public class Card {
    private String number;
    private String color;
    private int size;

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public Card(String number, String color, int size) {
        this.number = number;
        this.color = color;
        this.size = size;
    }

    public Card() {
    }

    @Override
    public String toString() {
        return color + number;
    }
}