Java可变参数,Collection集合工具类,shuffle方法,Collections.sort方法

1、可变参数

可变参数:是JDK1.5之后出现的新特性
使用前提:当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数。
使用格式:定义方法时使用
修饰符 返回值类型 方法名(数据类型…变量名){ }
可变参数的原理:
可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数。
传递的参数个数,可以是0个(不传递)1,2,3,4…多个
代码举例:

public class Demo01VarArgs {
    
    
    public static void main(String[] args) {
    
    

        int i = add(10, 20, 30, 40, 50, 60);
        System.out.println(i);
    }

    /*
    定义计算(0—n)整数和的方法
    已知:计算整数的和,数据类型已经确定int
    但是参数的个数不确定,不知道计算几个整数的和,就可以使用可变参数
    add();就会创建长度为0的数组,new int[0]
    add(10, 20, 30);就会创建一个长度为3的数组,存储传递的参数:new int[3];
     */

    public static int add(int...arr) {
    
    
//        System.out.println(arr); //[I@4554617c
//        System.out.println(arr.length);
        //定义一个初始化的变量,记录累加求和
        int sum = 0;

        //遍历数组中的元素
        for (int i : arr) {
    
    
            sum += i;
        }
        return sum;
    }

    //定义一个方法,计算两个int整数的和
//    public static int add2(int a, int b) {
    
    
//        return a + b;
//    }
    //计算三个整数的和
//    public static int add3(int a, int b, int c) {
    
    
//        return a + b + c;
//    }
}

可变参数的注意事项:
1、一个方法的参数列表,只能有一个可变参数
2、如果方法的参数有多个,那么可变参数必须写在参数列表的末尾。
终极写法:

public static void method(Object...obj){
    
    
}

2、Collection集合工具类

部分常用方法:
public static boolean addAll(Collection c, T…elements);往集合中添加一些元素
public static void shuffle(List<?> list) 打乱顺序:打乱集合的顺序。

public class Demo01Collections {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<String> list = new ArrayList<>();
        //往集合中添加多个元素add方法
//        list.add("黄佳林");
//        list.add("倪文瀚");
//        list.add("高佳林");
//        list.add("红佳林");
//        System.out.println(list);

        //addAll方法
        Collections.addAll(list,"a","b","e", "f", "g");
        System.out.println(list); //[a, b, e, f, g]
        
        //打乱顺序
        Collections.shuffle(list);
        System.out.println(list); //[f, b, g, a, e]

    }
}

public static void sort(List list):将集合中元素按照默认规则排序。
注意:sort方法使用前提:
被排序的集合里边存储的元素,必须实现Comparable,重写接口中的方法compareTo定义排序中的规则。
Comparable排序规则:
自己(this)- 参数:升序
参数- 自己(this):降序
对象类:

public class Person implements Comparable<Person> {
    
    
    private String name;
    private int age;

    public Person() {
    
    
    }

    @Override
    public String toString() {
    
    
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Person(String name, int age) {
    
    
        this.name = name;
        this.age = age;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    @Override
    public int compareTo(Person o) {
    
    
        //return 0; //认为元素都是相同的
        //自定义比较的规则,比较两个人的年龄(this, 参数Person)
        return this.getAge() - o.getAge();  //年龄升序排序
    }
}

实现类:

public class Demo02Sort {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(5);
        list.add(0);
        list.add(8);
        list.add(7);
        System.out.println(list); //[1, 2, 5, 0, 8, 7]

        //sort方法排序
        Collections.sort(list);
        System.out.println(list); //[0, 1, 2, 5, 7, 8]

        ArrayList<String> list1 = new ArrayList<>();
        list1.add("a");
        list1.add("d");
        list1.add("b");
        list1.add("c");
        System.out.println(list1); //[a, d, b, c]

        Collections.sort(list1);
        System.out.println(list1); //[a, b, c, d]

        ArrayList<Person> list2 = new ArrayList<>();
        list2.add(new Person("张三",18));
        list2.add(new Person("李四",20));
        list2.add(new Person("王五",17));
        System.out.println(list2);
        //[Person{name='张三', age=18}, Person{name='李四', age=20}, Person{name='王五', age=17}]

        Collections.sort(list2);
        System.out.println(list2);
        //[Person{name='王五', age=17}, Person{name='张三', age=18}, Person{name='李四', age=20}]

    }
}

public static void sort(List list, Comparator<? super T> ):将集合中的元素按照指定规则排序
对象类:

public class Student {
    
    
    private String name;
    private int age;

    public Student() {
    
    
    }

    public Student(String name, int age) {
    
    
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
    
    
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }
}

实现类:

public class Demo03Sort {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(4);
        list1.add(2);
        list1.add(3);
        System.out.println(list1); //[1, 4, 2, 3]

        Collections.sort(list1, new Comparator<Integer>() {
    
    
            @Override
            public int compare(Integer o1, Integer o2) {
    
    
                return o1 - o2;
            }
        });
        System.out.println(list1); // [1, 2, 3, 4]

        ArrayList<Student> list2 = new ArrayList<>();
        list2.add(new Student("迪丽热巴", 20));
        list2.add(new Student("杨幂", 19));
        list2.add(new Student("王雷", 21));
        list2.add(new Student("俄哈弗", 15));

        Collections.sort(list2, new Comparator<Student>() {
    
    
            @Override
            public int compare(Student o1, Student o2) {
    
    
                return o1.getAge() - o2.getAge();
            }
        });
        System.out.println(list2);
        //[Student{name='俄哈弗', age=15}, Student{name='杨幂', age=19}, Student{name='迪丽热巴', age=20}, Student{name='王雷', age=21}]
    }
}

猜你喜欢

转载自blog.csdn.net/Gaoju12138/article/details/109454694