Collections集合工具类的方法

java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:

public static <T> void sort(List<T> list):将集合中元素按照默认规则排序

public static <T> boolean addAll(Collection<T>c,T..elements):往集合中添加一些元素

public static void shuffle(List<?> list):打乱顺序。打乱集合顺序

public static<T> void sort (List<T> list):将集合中元素按照默认规则排序

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

注意:

sort(List<T> list)使用前提

被排序的集合里边存储的元素,必须实现Comparable,重写接口中的方法compareTo定义排序的规则

Comparable接口的排序规则:

自己(this)-参数:升序

参数 - 自己(this):降序

public int compareTo(Person o){

    //return 0;//认为元素都是相同的

    //自定义比较的规则,比较两个人的年龄(this,参数)

    //return o.xx - this.xx();//升序排序

}

Comparable和Comparator的区别

Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的方法

Comparator:相当于找一个第三方的裁判,比较两个

Comparator的排序规则:

o1-o2:升序

02-o1:降序

//重写比较的规则

public int compare(Integer o1,Integer o2){

    return o1-o2;//升序

}

public class Student{

    private String name;

    private int age;



    public void getName() {

        return name;

    }

    public void getAge() {

        retrun age;

    }

    public void setName(String name) {

        this.name = name;

    }

    public void setAge(int age) {

        this.age = age;

    }

}

    public class Demo() {

        public static void main(String[] args){

            ArrayList<Integer> list = new ArrayList<>();

            list.add(1);

            list.add(3);

            list.add(2);

            Collections.sort(list,new Comparator<Integer>(){

        //重写比较规则

        @Overide

        public int compare (Interger 01,Interger 02){

            renturn o1-o2;

        }

    });

        ArrayList<Student> list01 = new ArrayList<>();

        list01.add(new Student ("m",18));

        list01.add(new Student("z",18));

        list01.add(new Student("q",18));

        Collections.sort(list01,new Comparator<Student>(){

        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;

    }

        });

        }

    }

 

上一篇:NOIP 注意事项


下一篇:最近学习了限流与RateLimiter