文章目录
一、Comparable
- 一、Comparable
- 二、Comparator
- 示例代码
public interface Comparable
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
二、Comparatorpublic 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 c = getStringComparator();
String[] strs = new String[]{"ddff", "de", "ert"};
// 根据传入的比较器对数组进行排序
Arrays.sort(strs, c);
// 把排序号的字符串数组打印输出
System.out.println(Arrays.toString(strs));
}
public static Comparator getStringComparator() {
// 使用匿名内部类来实现
return new Comparator() {
@Override
public int compare(String o1, String o2) {
// 如果返回0表示相等
// 后面减去前面的,表示降序;前面减去后面的表示升序
return o2.length() - o1.length();
}
};
}
}