该Comparator接口确实有2个抽象方法。但是其中之一是equals,它会覆盖类中equals定义的方法Object,并且此方法不计在内。
来自@FunctionalInterface:
如果接口声明的抽象方法覆盖的公共方法之一java.lang.Object,则该方法也不会计入接口的抽象方法计数,因为该接口的任何实现都将具有来自java.lang.Object其他地方的实现。
这样,这使Comparator接口成为功能方法所在的功能接口compare(o1, o2)。
lambda表达式
(a, b) -> a > b ? -1 : 1符合该协定:它声明2个参数并返回int。



