文章目录
- 一、Comparable
- 二、Comparator
- 示例代码
一、Comparable
public interface Comparable
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
二、Comparator
public interface Comparator
强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。
当且仅当对于一组元素 S 中的每个 e1 和 e2 而言,c.compare(e1, e2)==0 与 e1.equals(e2) 具有相等的布尔值时,Comparator c 强行对 S 进行的排序才叫做与 equals 一致 的排序。
示例代码
package priv.lwx.javaprac.functionalinterface;import java.util.Arrays;
import java.util.Comparator;/*** @ClassName Demo03FunctionalInterface* @Description TODO* @Author liaowenxiong* @Version 1.0* @date 2021/9/7 下午3:26*/
public class Demo03FunctionalInterface {public static void main(String[] args) {// 获取比较器对象Comparator<String> c = getStringComparator();String[] strs = new String[]{"ddff", "de", "ert"};// 根据传入的比较器对数组进行排序Arrays.sort(strs, c);// 把排序号的字符串数组打印输出System.out.println(Arrays.toString(strs));}public static Comparator<String> getStringComparator() {// 使用匿名内部类来实现return new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {// 如果返回0表示相等// 后面减去前面的,表示降序;前面减去后面的表示升序return o2.length() - o1.length();}};}
}