Java的Collections.sort 排序

Collections.sort 排序第一种:直接排序

import java.util.*;

public class test {
    public static void main(String[] args){
        List<Integer> archinfolist = Arrays.asList(1,4,2,6,56,24);
        System.out.println(archinfolist);
        Collections.sort(archinfolist);
        System.out.println(archinfolist);
    }
}

结果:
[1, 4, 2, 6, 56, 24]
[1, 2, 4, 6, 24, 56]

第二种:想要降序排列

import java.util.*;

public class test {
    public static void main(String[] args){
        List<Integer> archinfolist = Arrays.asList(1,4,2,6,56,24);
        System.out.println(archinfolist);
        Collections.sort(archinfolist,new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                // o1-o2是升序,o2-o1是降序。
                /**换言之
      * 升序排的话就是第一个参数.compareTo(第二个参数);所以o1-o2 等同于o1.compareTo(o2)
      * 降序排的话就是第二个参数.compareTo(第一个参数);所以o2-o1 等同于o2.compareTo(o1)
      */
                return o1-o2;
            }
        });
        System.out.println(archinfolist);
    }
}

第三种,自定义的对象放到list中,还想要降序排列

import java.util.Comparator;

public class Person implements Comparable<Person> {
    // 学生姓名
    private String name;
    // 学生年龄
    private int age;



    // 带参构造
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    // getXxx() setXxx()方法
    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 s) {
        int num = this.age - s.age;
        int num2 = num == 0 ? this.name.compareTo(s.name) : num;
        return num2;
    }

}
import java.util.*;

public class test {
    public static void main(String[] args){
        // 创建集合对象
        List<Person> list = new ArrayList<Person>();
        // 创建对象
        Person s1 = new Person("荆轲", 20);
        Person s2 = new Person("亚瑟", 49);
        Person s3 = new Person("鲁班七号", 28);
        Person s4 = new Person("兰陵王", 36);
        Person s5 = new Person("后羿", 12);
        // 添加学生对象到list
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
        // 遍历
        System.out.println("------------原始顺序---------------");
        for (Person s : list) {
            System.out.println(s.getName() + "---" + s.getAge());
        }

        // 比较器排序
        Collections.sort(list, new Comparator<Person>() {
            @Override
            public int compare(Person s1, Person s2) {
                int num = s1.getAge() - s2.getAge();
                //comparator里面,-1代表小于,0代表等于,1代表大于
                int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
                return num2;
            }
        });

        // 遍历
        System.out.println("------------比较器排序--------------");
        for (Person s : list) {
            System.out.println(s.getName() + "---" + s.getAge());
        }
    }
}

参考:https://www.jianshu.com/p/32f9578b9acc

猜你喜欢

转载自blog.csdn.net/huqianlei/article/details/90969294