自定义Arrays.sort()方法

目标:

自定义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求最大数
如果还是没有思路的话,可以看一下我的另一篇博客,是对这题的讲解
求最大数解法

猜你喜欢

转载自blog.csdn.net/weixin_45659364/article/details/115733564