Java-->Comparator接口compare方法比较排序

说到这个接口得从剑指offer32题开始,我就想直观方法,全排列问题,虽然慢,其他方法再看。。以前就知道这个接口,这不刷题实在不行了,想起他了,进入正题,
Java-->Comparator接口compare方法比较排序_第1张图片
可以发现他注解是函数式接口,那函数式编程加lamba表达式,就简单了,
其中这个方法int compare(T o1, T o2);根据官方介绍可知,

a negative integer, zero, or a positive integer as the
* first argument is less than, equal to, or greater than the
* second.
这就不用我翻译了吧都看到懂,看不懂cv 百度翻译,就是小于0–>第一个参数o1小于第二个参数o2、等于零 o1等于o2 大于0就是~~ ·不用说了(注意是值)

这就不得不提Comparable接口了,只有一个compareTo方法,返回值解释跟上面一模一样的···,你会发现好多类实现了他,如图BigDecimal,包装类Long,Boolean.Integer等等其他,也就是对这些类型可以强制排序
Java-->Comparator接口compare方法比较排序_第2张图片
Java-->Comparator接口compare方法比较排序_第3张图片

所以这个题理解为自底向上连接排列找最小,也就是每相邻两个排列去最小的 如:

  • 332 323 当然323,所以32顺序在3前面,
  • 接着32321 32132 所以321顺序在32前面
  • 合起来答案就是321 32 3
    Java-->Comparator接口compare方法比较排序_第4张图片
    代码如下就搞定了
package niuke;
import java.util.ArrayList;

你可能感兴趣的:(Java,java,算法)