比较器 Comparable 与compartor 的区别及理解

概述:两者都是比较器用于相同类型的比较,常用于排序功能的实现。
 
Comparable 实现:(内部排序,在pojo 中实现)

 
Comparator 实现:(外部排序,不在pojo中实现)
public static void compareTest(){
    List<User> list = new ArrayList<User>();
    list.add(new User("bob",27));
    list.add(new User("club",26));
    Collections.sort(list, new Comparator<User>() {
        public int compare(User o1, User o2) {
            return o1.getAge()-o2.getAge();
        }
    });
    //[User{name='club', age=26}, User{name='bob', age=27}]
    System.out.println(list.toString());
}

区别:
Comparable: 可以在对应的pojo 类中实现compareTo方法,然后调用
Collections.sort 或者 arrays.sort 会自动调用你实现的方法。但排序只有一种。

Comparator :可以实现多种不同的排序方式,只需要把你想要排序的方式作为参数传入sort 即可。
例如上面的代码我既可以按年龄排序也可以按名字排序。具体看上面的代码实现
 
但两者返回结果一致:当 前者 - 后者 < - 1 则像前移动 实现正序

 

posted @ 2019-05-27 16:31  蓝色丶格调  阅读(355)  评论(0编辑  收藏  举报