首页 > 编程语言 > 详细

Java Collections.sort() 排序

时间:2020-02-13 21:49:17      阅读:61      评论:0      收藏:0      [点我收藏+]

Collections 中有一个方法叫做sort可以对集合中的内容进行排序,要使用这个sort方法进行排序的集合,里面的泛型必须实现Comparable接口,实现这个接口的对象才具备排序的功能,这种排序自然排序。

public class User implements Comparable<User> {

    private String name;
    private int age;
    private int id;

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

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ", id=" + id +
                ‘}‘;
    }

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

    public int getAge() {
        return age;
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public User() {
    }
    
    // 重写compareTo方法
    @Override
    public int compareTo(User o) {
        // 先比较age
        int i = this.getAge() - o.getAge();
        if (i == 0) {
            //age相等,再比较id
            int j = this.getId() - o.getId();
            return j;
        }
        return i;
    }
}

测试类

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

        List<User> list = new ArrayList<>();
        list.add(new User("张三", 19, 4));
        list.add(new User("李四", 18, 2));
        //Collections.addAll(list, new User("王五", 17, 3), new User("赵六", 17, 1));
        list.add(new User("王五", 17, 3));
        list.add(new User("赵六", 17, 1));

        System.out.println("排序前:" + list);
        Collections.sort(list);
        System.out.println("排序后:" + list);
    }
}

结果:

排序前:[User{name=‘张三‘, age=19, id=4}, User{name=‘李四‘, age=18, id=2}, User{name=‘王五‘, age=17, id=3}, User{name=‘赵六‘, age=17, id=1}]
排序后:[User{name=‘赵六‘, age=17, id=1}, User{name=‘王五‘, age=17, id=3}, User{name=‘李四‘, age=18, id=2}, User{name=‘张三‘, age=19, id=4}]

 

内部类方式

public class Test2 {

    public static void main(String[] args) {

        List<String> list = new ArrayList<String>();
        list.add("aa");
        list.add("cc");
        list.add("bb");

//        1、o1大于o2,返回正整数
//        2、o1等于o2,返回 0
//        3、o1小于o3,返回负整数

        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                //return o1.compareTo(o2); // 升序
                return o2.compareTo(o1); // 降序
            }
        });

        System.out.println(list);  // [cc, bb, aa]
    }
}

 

Java Collections.sort() 排序

原文:https://www.cnblogs.com/wakey/p/12305085.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!