欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(java总结)可变参数、Collections工具类

程序员文章站 2024-01-15 17:39:10
...
package Demo32;
/*
可变参数:
    使用前提:
        当方法的参数列表数据类型已经确定,但是参数个数不确定,就可以使用可变参数
    使用格式:定义方法时使用
        修饰符 返回值类型 方法名(数据类型...变量名){}
    可变参数原理:
        可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,

 */
public class DemoVarArgs {
    public static void main(String[] args) {
        int i = add("111",10,20,30,40,50,60,70,80,90);
        System.out.println(i);
    }
    //定义计算(0~n)整数和的方法,但是不确定是几个
    //add();就会创建一个长度为0的数组
    // add(10,20); 就会创建一个长度为2的数组
    /*
    注意事项:
    1、一个方法的参数列表,只能有一个可变参数
    2、如果方法的参数有多个,那么可变参数必须写在参数列表的的末尾
     */
    private static int add(String b,int...arr) {
        //定义初始化的变量,记录累加求和
        int sum = 0;
        for(int i: arr)
        sum +=i;
        return sum;


//        System.out.println(arr);
//        System.out.println(arr.length);
//        return 0;
    }

}

package Demo32;

import java.util.ArrayList;
import java.util.Collections;

/*
java.util.ArrayList集合工具类,用来对集合进行操作,部分方法如下:
    public static <T> boolean addAll(Collection<T> c, T...elements):往集合中添加一些元素。
    public static void shuffle(List<?> List)打乱顺序:打乱集合顺序
 */
public class DemoCollections {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //往集合中添加元素
//        list.add("a");
//        list.add("b");
//        list.add("c");
//        list.add("d");
 //       System.out.println(list);
        System.out.println("=============");
        Collections.addAll(list,"a","b","c");
        System.out.println(list);
        //打乱集合顺序
        Collections.shuffle(list);
        System.out.println(list);

    }
}

package Demo32;

import java.util.ArrayList;
import java.util.Collections;

/*
java.util.Collection是集合工具类,用来对集合进行操作,
    public static <T> void sort(List<T> list):将集合元素按照默认规则排序

    自定义类排序
    注意:使用前提
        被排序的集合必须实现comparable,重写接口中的方法定义排序的规则
    Comparable接口的排序规则:
        自己(this) - 参数 :升序
        反之降序
 */
public class DemoSortComparable {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(5);
        list.add(3);
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);//默认是升序

        ArrayList<Person1> list1 = new ArrayList<>();
        Person1 p1 = new Person1("张三",20);
        Person1 p2 = new Person1("李四",40);
        Person1 p3 = new Person1("王五",30);
       list1.add(p1);
       list1.add(p2);
       list1.add(p3);

        Collections.sort(list1);
        System.out.println(list1);
    }
}

package Demo32;

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

    public Person1() {
    }

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

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

    public int getAge() {
        return age;
    }

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

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

package Demo32;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/*
Comparable和Comparable的区别:
    Comparable: 自己(this)和别人(参数)比较,自己要实现Comparable接口,重写compareTo方法
    Comparator:相当于找第三个的裁判,比较两个
 */
public class DemoSortComparator {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        Collections.sort(list, new Comparator<Integer>() {
            //这里是重写比较的规则
            @Override
            public int compare(Integer o1, Integer o2) {
             //   return o1-o2;//升序
                return o2-o1;//降序
            }
        });
        System.out.println(list);
        System.out.println("==============");

        ArrayList<Student> list1 = new ArrayList<>();
        list1.add(new Student("迪丽热巴",23));
        list1.add(new Student("古力娜扎",34));
        list1.add(new Student("玛尔扎哈",23));
        list1.add(new Student("玛尔扎哈",23));

//        Collections.sort(list1, new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                return o1.getAge()-o2.getAge();
//            }
//        });
//        System.out.println(list1);

        Collections.sort(list1, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int result =  o1.getAge()-o2.getAge();
                if(result==0){
                    result = o1.getName().charAt(0)-o2.getName().charAt(0);
                }
                return result;
            }
        });
        System.out.println(list1);
    }
}

package Demo32;

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

    public Student() {
    }

    public Student(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 String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

相关标签: java