比较器 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 则像前移动 实现正序