Java精通就是背----Comparable和Comparator

精通Java就是背----Comparable和Comparator

注:面试的时候,直接按着顺序说。

  • Comparable接口:
public interface Comparable<T>{//内部比较器,比较属性,静态绑定
	public int compareTo(T o);
}
  • Comparator接口:
public interface Comparator<T>{//外部比较器,比较器,动态绑定
	int compare(T o1,T o2);
	boolean equals(Object obj);
  • Comparable和Comparator两个都是接口,二者都是用来数组或者集合的排序来使用的。
  • Comparable接口:对于它的每个类的对象进行整体排序,这个接口的方法类需要类本身去具体实现。一般来说,如果在创建一个类的时候,如果这个类具有排序属性,那么最好去实现这个comparable接口,并override其compareTo(T o)方法,如果this对象比传递的参数更小,则返回一个负整数,如果比参数相等,则返回0,如果比参数更大,返回正整数。
  • Comparable接口的使用场景:在大多数实际情况下,我们想根据不同参数进行排序,比如,作为一个CEO,我想对员工基于薪资进行排序,一个HR相基于年龄对员工进行排序,这个时候需要使用Comparable接口,因为ComparablecompareTo(T o)方法实现只能基于一个字段进行排序,不能根据选择对象字段来对对象进行排序。
  • Compartor接口:可以实现两个对象的特定字段的比较(比如,比较员工这个对象的年龄),该接口的compare (T o1,T o2)方法的实现需要传递两个对象参数,若第一个参数小于第二个参数。则返回负整数,若相等,则返回0,若大于,则返回正整数。
  • Comparator接口的使用场景:如果一个类没法修改,那可以采用外部比较器Comparator;
  • Comparable接口和Comparator接口区别:Comparable接和Comparator接口被用来对对象集合或数组进行排序,Comparable位于java. lang包,Comparator位于java.util包,Comparable接口被用来提供对象的自然排序,可使用它来提供基于单个逻辑的排序。Comparator接口被用来提供不同的排序算法,可根据指定字段选择需要使用的Comparator来对指定的接口进行排序,实现Comparable接口的方式比实现Comparator接口的耦合性要强一些,如果要修改比较算法,要修改Comparable接口的实现类,而实现Comparator的类是在外部进行比较的,不需要对实现类有任何修改。
  • Comparable是排序接口,若一个类实现了Comparable接口,就意味着该类支持排序,而Comparator是比较器,我们若需要控制某个类的次序,可以建立一个该类的比较器,来进行排序。

你可能感兴趣的:(精通Java就是背UP!UP!,java)