Compareable与Comparator的比较。

一.两者都是为了实现对对象排序更加方便,而产生的。实现Compareable与Comparator,目的就是为了可以直接对自定义对象进行排序。

Compareable接口

  • 实现 Compareable接口的对象要重写t.compareto(t1);方法。此时就相当与赋予了该对象了可以比较的功能。
Compareable接口使用实例
class Students implements Comparable{
    int age;
    String name;
    Students(int age,String name){
        this.age=age; this.name=name;
    }
    @Override
    //重写compareTo方法按Students的年龄排序
    public int compareTo(Students o) {
        if (this.age-o.age>0)
            return 1;
        if (this.age-o.age<0)
            return -1;
       else
        return 0;
    }

    @Override
    public String toString() {
        return "Students{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

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

        List list =new ArrayList();
        list.add(new Students(10,"zhangsan"));
        list.add(new Students(18,"lisi"));
        list.add(new Students(9,"wangwu"));
        Collections.sort(list);
          System.out.println(list);
    }
}

输出结果
在这里插入图片描述

Comparator接口使用实例
  • 它是一个比较器。比如我们要给学生类排序可以写一个学生类的比较器。
  • 实现了Comparator接口的实现类就要重写compare(T t,T t1);方法
Comparator接口使用实例
class Student {
       int age;
      String name;
    Student(int age,String name){
        this.age=age; this.name=name;
    }
    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}
//学生比较器
class StudentComparator implements Comparator{

//重写compare方法
    @Override
    public int compare(Student student, Student student1) {
        if (student.age-student1.age>0)
            return 1;
        if (student.age-student1.age<0)
            return -1;
        else
            return 0;
    }
}
public class  ComparatorTest{
    public static void main(String args[]){

        List list =new ArrayList();
        list.add(new Student(10,"zhangsan"));
        list.add(new Student(18,"lisi"));
        list.add(new Student(9,"wangwu"));
        Collections.sort(list,new StudentComparator());
               System.out.println(list);
    }
}

输出结果
在这里插入图片描述

你可能感兴趣的:(Compareable与Comparator的比较。)