目标:
自定义Arrays.sort()方法,让其实现从大到小排序
实现:
如下图代码
public class Test {
public static void main(String[] args) {
Integer [] arr = {0, 9, 8, 6, 4};
Arrays.sort(arr,(z1,z2)->(z2).compareTo(z1));
for (int a : arr
) {
System.out.print(a+" ");
}
}
}
我们对sort方法进行了自定义,让其实现了由大到小的排序
分析:
主要代码其实就是这一句话,我们先看一下compareTo方法,该方法传入的数组不能是基本类型(int char double),所以我们要将int类型的数组变为Integer类型,然后其实就很好理解了,(参数)->(结果),传入参数z1和z2,因为compareTo是前者比后者,如果前者大于后者返回1否则返回-1,返回-1的时候就会将z1和z2调换位置,所以我们在此是用z2比较z1。这样就会逐步对数组中的所有的元素进行排序,直至全部符合这个规律为止
Arrays.sort(arr,(z1,z2)->(z2).compareTo(z1));
同理,将数组元素按照由小到大排序就是将z1和z2的位置进行调换即可
拓展:
利用自定义的方法,我们可以对字符串类型的进行比较,在刷题的时候,我们经常会遇到让我们比较数的大小或者是一个字符串类型的数组,输出其元素组成的最大数,下面就是一道经典例题。
LeetCode求最大数
如果还是没有思路的话,可以看一下我的另一篇博客,是对这题的讲解
求最大数解法